Web 应用程序的网页显示奇怪的错误。我逐渐删除了所有的 HTML/CSS/JS 代码,并得到了下面的基本和简单的代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<title>test</title>
<script type="text/javascript">
var TestObj =
{
foo: function() {}
}
alert(x); //ok displays "undefined"
var x = TestObj.foo;
var z = TestObj.foo;
</script>
</head><body>
<p onclick='alert(x);'>Click shows function foo!</p>
<img onclick='alert(x);' alt='CRAZY click displays a number in FF/Safari not function foo' src='' style='display: block; width: 100px; height: 100px; border: 1px solid #00ff00;'>
<p onclick='alert(x);'>Click shows function foo!</p>
</body></html>
这很疯狂:当点击 P 元素时,字符串“function(){}”按预期显示。但是当单击 IMG 元素时,它会显示一个数字,就好像 x 函数以某种方式从内存中删除或取消实例化(它甚至没有将 x 显示为“未定义”,而是显示为一个数字)。
为了让您快速测试它,我将上面的工作测试也放在这里。
这可以在Firefox 3.6 和 Safari 4.0.4上重现。
一切都只能在 IE7+ 上正常工作。
我真的一无所知,我想知道x是否可能是 JS Firefox/Safari 中的保留关键字。感谢任何可以提供帮助的人!
供参考:
- 如果你用 z() 替换 x() 一切都可以在所有浏览器中完美运行(这对我来说更疯狂)
- 在 src 属性中添加真实图像并不能解决问题
- 删除 img 中的样式并不能解决问题(我为图像提供样式只是为了帮助您单击图像,因此您可以看到 imnage 边框)