这是Opera中的onload错误吗?

时间:2012-08-16 19:57:27

标签: javascript opera onload

我相信我已经发现了Opera中的一个错误(在Windows 7上运行的12.01版本),但我正在寻找可能的解决方法的帮助(假设其他人可以确认这是一个错误)。

如果我有一个包含以下内容的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">
  <head>
    <title>Test</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" />
  </head>
  <body onload="window.alert(0);">
  </body>
</html>

永远不会触发“onload”事件。奇怪的是,如果我关闭脚本标签而不是自行关闭它,并改变:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" />

为:

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>

(很遗憾,我不能这样做),触发事件并显示我的提醒。

有没有其他人遇到这个问题?如果是这样,除了将脚本标记从<script />更改为<script></script>之外,他们还能找到解决方法吗?

注意:是的,我已经用Opera打开了一个错误报告。他们还没有回复。

1 个答案:

答案 0 :(得分:3)

这个“bug”存在于所有浏览器中,不仅仅在Opera中(我测试过Chrome,FF和IE)。

自动关闭脚本标签不起作用。在SO上查看此问题:Why don't self-closing script tags work?

修改

我不知道为什么你不能用</script>关闭脚本标记,但是一种可能的解决方法是用JavaScript加载脚本:

var newScript = document.createElement("script");
newScript.type = "text/javascript";
newScript.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js";
newScript.onload = function(){
    // jQuery code...
};
document.getElementsByTagName("head")[0].appendChild(newScript);

(好吧,诚然,这实际上迫使你在某个地方使用</script>,但至少<script></script>之间的部分现在不是空的......:P)