当前页面: 开发资料首页 → Javascript 专题 → 网页的DOCTYPE HTML public 会导致页面的部分事件不触发
摘要: 网页的DOCTYPE HTML public 会导致页面的部分事件不触发
最近忙着做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('
<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 的
指定了 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">
标准信息