【问题标题】:Javascript doesn't work in Chrome when DOCTYPE is declared声明 DOCTYPE 时,Javascript 在 Chrome 中不起作用
【发布时间】:2014-01-25 13:25:08
【问题描述】:

我正在使用一个旧网站,该网站在鼠标悬停时使用 javascript 作为下拉菜单。该菜单在 Chrome 中运行良好,但当我添加以前缺少的 <!DOCTYPE html> 时停止运行。

我知道 javascript 可能是旧的和过时的,但是在没有声明 doctype 的情况下它确实可以正常工作。有没有一种无需寻找新脚本即可快速修复此网站的方法?

<script src="/js/script_menus.js"></script>
<script src="/js/script_dropdown.js"></script>

<td><a onMouseOut="MM_swapImgRestore();FW_startTimeout();"
onMouseOver="window.FW_showMenu(window.fw_menu_1,51,109);
MM_swapImage('img2','','img/nav_02_over.gif',1);"   href="productinfo.html">
<img src="img/nav_02.gif" width="102" height="26" name="img2"></a></td>

更新

我知道这不能回答问题,但我决定终止这个愚蠢的 javascript 菜单并用 CSS 编写它。这样手头的问题就迎刃而解了。

【问题讨论】:

  • 尝试过渡文档类型
  • 如果它是一个旧网站,我猜 HTML5 不是文档的正确文档类型?试试 html4 过渡文档类型。
  • 网站可能使用了一些 JS 怪癖,这些怪癖只有在没有给出标准文档类型时触发的所谓“怪癖模式”中才可用。
  • @ComFreek:Chrome 有“怪癖模式”?这让我很惊讶。我以为只有 IE 可以。
  • 你需要调试代码,看看哪里出错了。如果没有具体细节,我们无能为力。

标签: javascript html google-chrome doctype


【解决方案1】:

我会尝试使用过渡文档类型,像这样

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">

因为我猜你的网站有过时的 HTML 和 Javascript 元素,这会给你一个非常松散的文档类型,几乎可以让任何事情发生

看起来你有window.FW_showMenu的代码,而我唯一能轻松找到相关信息的网站是this one,它看起来大约是我的两倍(严重)。

好像也是DreamWeaver生成的,所以我觉得最简单的 这样做会在未来提供大部分支持,那就是用 jQuery 或纯 CSS 下拉菜单替换它

【讨论】:

  • 试过上面的声明,代码还是坏了。是的,它很旧。 :)
  • 好吧,如果它在没有 doctype 的情况下工作,只需将 doctype 保留 :)
  • 但老实说,我只是用新的下拉菜单替换它
【解决方案2】:

通常不是关于 javascript,而是 DOM 结构。当您不添加任何 DOCTYPE 声明时,浏览器往往会在 quirks 模式下工作,这会改变 DOM 的行为。如果您不想更改代码中的任何内容,请尝试使用 HTML4 DOCTYPE 过渡,如果仍然无法正常工作,请不要添加 decleration。 但我建议修改代码,以便创建与最新 DOCTYPE 兼容的 DOM 结构。

【讨论】:

  • 声明过渡 DOCTYPE 并没有解决这个问题,而 javascript 超出了我的想象:/
  • @KnocksX 那你为什么要添加 DOCTYPE 声明呢?
  • 我想在不破坏任何东西的情况下尽可能地使其合规。例如,它之前没有指定字符集,这可能使其容易受到脚本攻击。只是想尽可能多地消除它。
  • 如果不先看剧本,很难说什么。但我可以看出,在怪癖模式下,默认情况下,身高是 100%,而在标准模式下,它是由内容决定的。这可能是一个起点。我觉得它正在显示一些东西,但高度可能为零。还可以按 F12 打开浏览器控制台,并确保在标准模式下尝试时没有收到任何 javascript 错误。
  • 我正在用 CSS 重写整个菜单并杀死这个可笑的 javascript。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 2015-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多