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 显示为“未定义”,而是显示为数字)。
为了让您快速测试它,我也在上面放置了工作测试here http://vanylla.com/crazy/test.html.
这可以在两者上复制火狐 3.6 和 Safari 4.0.4.
一切仅在 IE7+ 上正常工作.
我真的很无知,我想知道是否x可能是 JS Firefox/Safari 中的保留关键字。感谢任何可以提供帮助的人!
FYI:
- 如果用 z() 替换 x()
一切都完美地进行
浏览器(这更疯狂
我)
- 在src中添加真实图像
属性并不能解决问题
- 删除 img 中的样式无法修复
问题(我给图像赋予了样式
只是为了帮助您点击图片
这样你就可以看到图像边框)
您的问题是变量范围,而不是“x”被保留。图像对象有一个名为“x”的属性。您可以使用 Chrome 的开发者工具看到这一点。当您调用“alert(x);”时在图像对象上,范围中的“x”是图像上的“x”属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)