29

IE10 拒绝启动一些 jQuery 代码,就我在运行时发现的某个地方检测到错误的 doctype 并在 4.01 过渡版本之前添加了一些 jQuery 代码。

在 IE 的开发人员工具中查看我看到的控制台 HTML1524: Invalid DOCTYPE. The shortest valid doctype is "<!DOCTYPE html>"并遵循(运行时修改的)html:

我相信滥用 DOCTYPE 和一些 jQuery 无法正常工作都有一个共同的原因,但没有找到它是什么。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><HTML 
xmlns="http://www.w3.org/1999/xhtml" slick-uniqueid="1"><HEAD><META 
content="IE=10.000" http-equiv="X-UA-Compatible">

<META http-equiv="X-UA-Compatible" content="IE=edge">
<META http-equiv="Content-Type" content="text/html; charset=windows-1250">
<TITLE>....

虽然IE 声明在标准模式下运行,但仍有一些事情不起作用(主要是用 jQuery 替换点击事件上的链接以显示内容而不是加载整个新页面 - 用于使用手风琴解压缩其他菜单分支,类别标题中的原始链接带有 href仅适用于 jQuery 无法为手风琴制作动画的情况)

太多的其他点击事件或 jQuery UI 函数使链接看起来像按钮在其他浏览器中工作时无法在 IE 中运行。

服务器提供的原始 HTML 如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="sk" lang="sk">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<title>...

我被迫同时使用 MooTools 和 jQuery,并且知道 htm 属性中的 slick-uniqueid 来自 Moo,我不知道编辑 doctype 的人是否相同,但我确信它只发生在 IE 浏览器中, Chrome 和 Firefox 运行正常。

jQuery 脚本是从外部 js 文件加载的,包裹在jQuery(function() {..中,并且都使用完整的变量名 jQuery 而不是美元符号,例如 jQuery("#myid").click( function(e){...

由于同时使用 mootools 和 jQuery(我知道我不应该但需要一些用于带有缩略图和 KenBurns 效果的幻灯片的 mootools 插件)并且首先加载 jQuery,并且在脚本中我只使用jQuery()... MooTools稍后使用,因为它只是在需要时在正文中加载(不确定是否可以,但这就是“visualslideshow”呈现它的方式)。

我很高兴听到有关如何识别或修复它以使 jQuery 正常工作的任何想法或建议(v1.8)。

4

5 回答 5

15

将您的 DOCTYPE 更改为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

(使用 XHTML 严格而不是过渡)

IE10 将停止在控制台中抛出错误。我不确定为什么 IE10 不再喜欢过渡 XHTML。如果有人有办法让 IE10 识别 XHTML 1.0 过渡 DOCTYPE,那就太好了。

于 2013-04-21T03:50:40.360 回答
5

我能够通过使用摆脱错误

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />

代替

<meta http-equiv="X-UA-Compatible" content="IE=edge" />
于 2013-10-16T14:23:30.230 回答
3

我有同样的问题。值得查看您正在使用的任何外部库。我使用的是 BXSlider,它对 IE10 上的 jQuery 1.8 不满意。因此 IE10 失败并显示消息。

  HTML1524: Invalid DOCTYPE. The shortest valid doctype is "<!DOCTYPE html>

我的解决方案是将我的 JQuery 升级到 1.9.1 并且还包括 jQuery 迁移。

      <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
      <script src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script>

希望这可以帮助某人。

于 2013-08-09T09:21:24.237 回答
0

您的第二个第一个DOCTYPE定义中有错字,W3C缺少一个额外的c

                                                                             v-- extra "c"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

尝试修复它并再次测试。

于 2013-07-15T17:55:55.087 回答
0

这在 IE 和 FireFox 中发生在我身上,因为当我包含我写的 css 时"< link rel="stylesheet" type="text/javascript ..."

我只是把它改成它就可以type="text/css"了。

于 2013-07-15T17:30:30.457 回答