【问题标题】:JavaScript, namespace, IE11 error SCRIPT5009JavaScript、命名空间、IE11 错误 SCRIPT5009
【发布时间】:2014-06-27 16:34:11
【问题描述】:

这是 HTML 页面:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="test.js"></script>
</head>
<body>

<script type="text/javascript">
    var myobject = new mynamespace.main.Main ("This is string.");
</script>

</body>
</html>

Ant 这是 test.js

var mynamespace =
{
    main:
    {
        controller: {},
        view: {}
    },

    elements: {}
};

mynamespace.main.Main = function (string)
{
    this.string = string;
    this.controller = new mynamespace.main.controller.Controller (this.string);
}

mynamespace.main.controller.Controller = function (string)
{
    this.view = new mynamespace.main.view.View (string);
    this.element = new mynamespace.elements.Element (string);
    console.log ("Controller, string: " + string);
}

mynamespace.main.view.View = function (string)
{
    console.log ("View, string: " + string);
}

mynamespace.elements.Element = function (string)
{
    console.log ("Element, string: " + string);
}

两个文件都放在同一个文件夹中。

Internet Explorer 11 返回错误:SCRIPT5009:对象 mynamespace 未定义。

此代码只有在我将 test.js 的代码放入 HTML 页面时才有效。请问怎么解决?

我不使用任何像 jQuery 这样的库。

【问题讨论】:

  • 你可能需要一个结束&lt;/head&gt;标签
  • 李:对不起,我忘了写在这里。还是不行。
  • test.js 是否与您的页面被访问在同一个文件夹中?您是否检查过您可以毫无问题地访问 test.js?
  • @JLRishe:是的,test.js 在同一个文件夹中,我可以在浏览器中访问它。
  • 我遇到了同样的问题,在我的情况下,这是因为 js 文件中的一些注释标签。它不喜欢这些类型的标签

标签: javascript javascript-namespaces


【解决方案1】:

您可能需要清除缓存?

http://social.technet.microsoft.com/Forums/ie/en-US/ba430f1d-f3a5-44f0-aaec-3b09c4d68d1c/ie-11-javascript-files-are-not-loaded-correctly-from-cache?forum=ieitprocurrentver

也许 IE 11 同步脚本加载未按预期工作。 IE。它默认为异步而不是就地或延迟。

http://msdn.microsoft.com/en-us/library/ie/hh673524(v=vs.85).aspx

否则,我无法在 Win 64 win 7 上使用 IE 11 中的相同设置重现此问题。

【讨论】:

  • 感谢您的回答。我用你的代码替换了 HTML 文件中的var myobject = new mynamespace.main.Main ("This is string.");,但我仍然得到同样的错误。很奇怪。
  • document.addEventListener('DOMContentLoaded', function() {换行是否有效?
  • 我认为这不是问题所在。他没有尝试访问尚不存在的 DOM 元素 - 他正在尝试访问已声明的脚本对象,并且该脚本在文档中出现的时间比他失败的内联代码更早。
  • @FlavorScape:很遗憾没有。
  • 我无法使用您在 IE 11 中的确切代码重现您的问题。我认为有时本地文件可以推迟到异步,反之亦然(使用较旧的浏览器),但这里不是这种情况。
猜你喜欢
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 2011-11-15
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
相关资源
最近更新 更多