站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Javascript 专题网页的DOCTYPE HTML public 会导致页面的部分事件不触

网页的DOCTYPE HTML public 会导致页面的部分事件不触

摘要: 网页的DOCTYPE HTML public 会导致页面的部分事件不触
<tr> <td>

最近忙着做JS,在JS里头有用到鼠标的一些事件时,通常我都是把鼠标事件包含在一个JS文件中调用
<script type="text/javascript" src="js/sb_cd.js"></script>

在鼠标事件中若包含如下鼠标的特效,就会导致事件触发:js/sb_cd.js
// JavaScript Document

var sb_cd_a_Colour='fff000';
var sb_cd_b_Colour='00ff00';
var sb_cd_c_Colour='ff00ff';
var sb_cd_Size=120;

var sb_cd_YDummy=new Array(),sb_cd_XDummy=new Array(),sb_cd_xpos=0,sb_cd_ypos=0,sb_cd_ThisStep=0;sb_cd_step=0.6;
if (document.layers){
window.captureEvents(Event.MOUSEMOVE);
function sb_cd_nsMouse(evnt){
sb_cd_xpos = window.pageYOffset+evnt.pageX+6;
sb_cd_ypos = window.pageYOffset+evnt.pageY+16;
}
window.onMouseMove = sb_cd_nsMouse;
}
else if (document.all)
{
function sb_cd_ieMouse(){
sb_cd_xpos = document.body.scrollLeft+event.x+6;
sb_cd_ypos = document.body.scrollTop+event.y+16;
}
document.onmousemove = sb_cd_ieMouse;
}

function sb_cd_swirl(){
for (i = 0; i < 3; i++)
{
sb_cd_YDummy[i]=sb_cd_ypos+sb_cd_Size*Math.sin((1*Math.sin((sb_cd_ThisStep)/10))+i*2)*Math.sin((sb_cd_ThisStep)/4);
sb_cd_XDummy[i]=sb_cd_xpos+sb_cd_Size*Math.cos((1*Math.sin((sb_cd_ThisStep)/10))+i*2)*Math.sin((sb_cd_ThisStep)/4);
}
sb_cd_ThisStep+=sb_cd_step;
setTimeout('sb_cd_swirl()',10);
}

var sb_cd_amount=10;
if (document.layers){
for (i = 0; i < sb_cd_amount; i++)
{
document.write('');
document.write('');
document.write('');
}
}
else if (document.all){
document.write('

'
+'
');
for (i = 0; i < sb_cd_amount; i++)
{
document.write('
');
document.write('
');
document.write('
');
}
document.write('
');
}
function sb_cd_prepos(){
var sb_cd_ntscp=document.layers;
var sb_cd_msie=document.all;
if (document.layers){
for (i = 0; i < sb_cd_amount; i++)
{
if (i < sb_cd_amount-1)
{
sb_cd_ntscp['sb_cd_nsa'+i].top=sb_cd_ntscp['sb_cd_nsa'+(i+1)].top;sb_cd_ntscp['sb_cd_nsa'+i].left=sb_cd_ntscp['sb_cd_nsa'+(i+1)].left;
sb_cd_ntscp['sb_cd_nsb'+i].top=sb_cd_ntscp['sb_cd_nsb'+(i+1)].top;sb_cd_ntscp['sb_cd_nsb'+i].left=sb_cd_ntscp['sb_cd_nsb'+(i+1)].left;
sb_cd_ntscp['sb_cd_nsc'+i].top=sb_cd_ntscp['sb_cd_nsc'+(i+1)].top;sb_cd_ntscp['sb_cd_nsc'+i].left=sb_cd_ntscp['sb_cd_nsc'+(i+1)].left;
}
else
{
sb_cd_ntscp['sb_cd_nsa'+i].top=sb_cd_YDummy[0];sb_cd_ntscp['sb_cd_nsa'+i].left=sb_cd_XDummy[0];
sb_cd_ntscp['sb_cd_nsb'+i].top=sb_cd_YDummy[1];sb_cd_ntscp['sb_cd_nsb'+i].left=sb_cd_XDummy[1];
sb_cd_ntscp['sb_cd_nsc'+i].top=sb_cd_YDummy[2];sb_cd_ntscp['sb_cd_nsc'+i].left=sb_cd_XDummy[2];
}
}
}
else if (document.all){
for (i = 0; i < sb_cd_amount; i++)
{
if (i < sb_cd_amount-1)
{
sb_cd_msie.sb_cd_x[i].style.top=sb_cd_msie.sb_cd_x[i+1].style.top;sb_cd_msie.sb_cd_x[i].style.left=sb_cd_msie.sb_cd_x[i+1].style.left;
sb_cd_msie.sb_cd_y[i].style.top=sb_cd_msie.sb_cd_y[i+1].style.top;sb_cd_msie.sb_cd_y[i].style.left=sb_cd_msie.sb_cd_y[i+1].style.left;
sb_cd_msie.sb_cd_z[i].style.top=sb_cd_msie.sb_cd_z[i+1].style.top;sb_cd_msie.sb_cd_z[i].style.left=sb_cd_msie.sb_cd_z[i+1].style.left;
}
else
{
sb_cd_msie.sb_cd_x[i].style.top=sb_cd_YDummy[0];sb_cd_msie.sb_cd_x[i].style.left=sb_cd_XDummy[0];
sb_cd_msie.sb_cd_y[i].style.top=sb_cd_YDummy[1];sb_cd_msie.sb_cd_y[i].style.left=sb_cd_XDummy[1];
sb_cd_msie.sb_cd_z[i].style.top=sb_cd_YDummy[2];sb_cd_msie.sb_cd_z[i].style.left=sb_cd_XDummy[2];
}
}
}
setTimeout("sb_cd_prepos()",10);
}
function sb_cd_Start(){
sb_cd_swirl(),sb_cd_prepos()
}
window.onload=sb_cd_Start;

其中页面的代码如下:
当打开DW时,通常会先有这样预先定义好的代码,先看看第一行
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<head>

无标题文档
</head>

<body>
<script type="text/javascript" src="js/sb_cd.js"></script>
</body>


问题找了很久,都不知道是什么地方的问题。后来才发现是DW生成的代码第一句
HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
使得这个鼠标事件不运行。,原来这里声明了后面的鼠标事件必须遵循这个DTD文档 的规则。
而不事件中的一些定义没有遵循,所以这个鼠标事件即不触发,也不报错。

官方是这样定义 DOCTYPE HTML PUBLIC 的

!DOCTYPE


指定了 HTML 文档遵循的文档类型定义(DTD)。

Microsoft® Internet Explorer 6 的新增内容

你可使用此声明将 Internet Explorer 6 及以后版本切换到标准兼容模式下。

语法

<table class=clsStd> <tr> <th>HTML</th> <td> 顶级元素 可用性 "注册//组织//类型 标签//定义 语言""URL"</td></tr></table>

可能值

<table class=clsStd> <tr> <td>顶级元素</td> <td>指定 DTD 中声明的顶级元素类型。这与声明的 SGML 文档类型相对应。 <table class=clsStd> <tr> <td noWrap>HTML</td> <td>默认。HTML。</td></tr></table></td></tr> <tr> <td>可用性</td> <td>指定正式公开标识符(FPI)是可公开访问的对象还是系统资源。 <table class=clsStd> <tr> <td noWrap>PUBLIC</td> <td>默认。可公开访问的对象。</td></tr> <tr> <td noWrap>SYSTEM</td> <td>系统资源,如本地文件或 URL。</td></tr></table></td></tr> <tr> <td>注册</td> <td>指定组织是否由国际标准化组织(ISO)注册。 <table class=clsStd> <tr> <td noWrap>+</td> <td>默认。组织名称已注册。</td></tr> <tr> <td noWrap>-</td> <td>组织名称未注册。Internet 工程任务组(IETF)和万维网协会(W3C)并非注册的 ISO 组织。</td></tr></table></td></tr> <tr> <td>组织</td> <td>指定表明负责由 !DOCTYPE 声明引用的 DTD 的创建和维护的团体或组织的名称,即 OwnderID。 <table class=clsStd> <tr> <td noWrap>IETF</td> <td>IETF。</td></tr> <tr> <td noWrap>W3C</td> <td>W3C。</td></tr></table></td></tr> <tr> <td>类型</td> <td>指定公开文本类,即所引用的对象类型。 <table class=clsStd> <tr> <td noWrap>DTD</td> <td>默认。DTD。</td></tr></table></td></tr> <tr> <td>标签</td> <td>指定公开文本描述,即对所引用的公开文本的唯一描述性名称。后面可附带版本号。 <table class=clsStd> <tr> <td noWrap>HTML</td> <td>默认。HTML。</td></tr></table></td></tr> <tr> <td>定义</td> <td>指定文档类型定义。 <table class=clsStd> <tr> <td noWrap>Frameset</td> <td>框架集文档。</td></tr> <tr> <td noWrap>Strict</td> <td>排除所有 W3C 专家希望逐步淘汰的代表性属性和元素,因为样式表已经很完善了。</td></tr> <tr> <td noWrap>Transitional</td> <td>包含除 frameSet 元素的全部内容。</td></tr></table></td></tr> <tr> <td>语言</td> <td>指定公开文本语言,即用于创建所引用对象的自然语言编码系统。该语言定义已编写为 ISO 639 语言代码(大写两个字母)。 <table class=clsStd> <tr> <td noWrap>EN</td> <td>默认。英语。</td></tr></table></td></tr> <tr> <td>URL</td> <td>指定所引用对象的位置。</td></tr></table>

注释

此声明必须出现在文档的起始处,出现在 html 标签之前。

!DOCTYPE 元素不需要关闭标签。

此元素在 Microsoft® Internet Explorer 3.0 的 HTML 中可用。

你可使用此声明在 Internet Explorer 6 及以后版本中切换为严格的标准兼容模式。若想打开此开关,请在你的文档顶部包含 !DOCTYPE 声明,在声明中指定合法的标签,在某些情况下,还需要指定定义和/或 URL。下面的表格列出了标准兼容模式的开关情况。 <table class=clsStd> <thEAD> <tr> <th>DOCTYPE</th> <th>出现 URL</th> <th>未出现 URL</th></tr></thEAD> <tr> <td>未出现 DOCTYPE</td> <td>关</td> <td>关</td></tr> <tr> <td>HTML (无版本)</td> <td>关</td> <td>关</td></tr> <tr> <td>HTML 2.0</td> <td>关</td> <td>关</td></tr> <tr> <td>HTML 3.0</td> <td>关</td> <td>关</td></tr> <tr> <td>HTML 4.0</td> <td>开</td> <td>开</td></tr> <tr> <td>HTML 4.0 Frameset</td> <td>开</td> <td>关</td></tr> <tr> <td>HTML 4.0 Transitional</td> <td>开</td> <td>关</td></tr> <tr> <td>HTML 4.0 Strict</td> <td>开</td> <td>开</td></tr> <tr> <td>XHTML</td> <td>开</td> <td>开</td></tr> <tr> <td>XML</td> <td>开</td> <td>开</td></tr> <tr> <td>无法识别的 DOCTYPE</td> <td>开</td> <td>开</td></tr></table> 注意 在标准兼容模式下,不能保证与其它版本的 Internet Explorer 保持兼容。当打开标准兼容模式时,文档的渲染行为也许与将来版本的 Internet Explorer 不同。若内容本来就是固定的(如刻录在 CD 上),则不应该使用此模式。

示例

下面的例子演示了如何使用 !DOCTYPE 声明指定文档遵从的 DTD,并将 Internet Explorer 6 及更高版本切换到标准兼容模式。

下面例子中的声明都指定了遵从 HTML 4.0 DTD。第二种声明指定了“Strict”。第一种声明没有指定。这两种声明都将会把 Internet Explorer 6 及以后版本切换到标准兼容模式。

 HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">

 HTML PUBLIC "-//W3C//DTD HTML 4.0 Strict//EN">

下面例子中的声明都指定了遵从“Transitional”HTML 4.0 DTD。第二种声明指定了 DTD 的 URL。第一种声明没有指定。第二种声明将会把 Internet Explorer 6 及以后版本切换到标准兼容模式。第一种声明不会。

 HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

 HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"

    "http://www.w3.org/TR/html4/loose.dtd">

标准信息

</td> </tr> </table>
↑返回目录
前一篇: 页面不刷新,提交表单
后一篇: javascript中取得下拉框的值太麻烦(下拉框联动)