【问题标题】:IE6 Script Tag errorIE6 脚本标签错误
【发布时间】:2018-04-23 20:03:35
【问题描述】:

我从未见过这个错误。我们有一些使用 Internet Explorer 6 的客户端,因此我们需要一些页面来处理它。

我们有以下 HTML 代码:

<script type="text/javascript">
var bust = 236;
</script>

IE6 抛出以下错误消息:'Undefined' is null or not an object

你知道它可能是什么吗? 谢谢。

【问题讨论】:

  • HTML 中没有id="bust" 的元素吗?古代 IE 过去常常从 ID 生成全局变量,这有时会导致意外。
  • “很抱歉,你别无选择,只能停止使用 IE6” 是全面的胜利。
  • @IlyaStreltsyn:不只是古代的 IE,所有的浏览器都这样做,而且很多代码都依赖于它,以至于它是 been standardized
  • @IlyaStreltsyn 所以如果我使用一个名为button 的变量,它可能会抛出一个错误?
  • 请用minimal reproducible example 更新您的问题,以证明问题(当然,您目前没有)。以防有人仍然可以挖出装有 IE6 的虚拟机。

标签: javascript internet-explorer-6


【解决方案1】:

听起来bust 与其他一些全局冲突。全局命名空间真的很拥挤。

您可以通过将代码包装在范围函数中来解决它,使其不再处于全局范围内:

<script type="text/javascript">
(function() {
    var bust = 236;
})();
</script>

或者如果它必须是一个全局名称,请尝试使用其他名称,直到找到不会导致问题的名称。全局变量并没有从根本上被破坏,即使在 IE6 中也是如此。

【讨论】:

  • 其实我需要这个变量是全局的。它用于我们所有的 javascript 文件中。
  • @MaurícioGiordano:如果没有 _bust 全局变量,它可能会与之发生冲突。
  • 是的。全局变量。它们的实现可能不会被破坏(即使在 IE6 中也不会),但是在任何上下文中(或者实际上在任何语言中)过度使用它们始终是代码错误的标志,并且有回头咬你的习惯。
  • @Simba:是的。 :-) 我将自己限制为一个目标为零的人。 (随着模块支持的出现,所述目标很快就会更容易实现。:-))
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-14
相关资源
最近更新 更多