我相信我已经发现了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打开了一个错误报告。他们还没有回复。
答案 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)