【问题标题】:ReferenceError foo is undefined (in IE and firefox)ReferenceError foo 未定义(在 IE 和 firefox 中)
【发布时间】:2013-11-20 08:05:33
【问题描述】:

浏览了问题,关于“ReferenceError foo is not defined”主题的类似问题很少。但是,我无法检测到代码中的错误并使其正常工作。它在 Chrome 和 Safari 中运行良好,但在 IE、Opera 和 Firefox 中运行良好:

HTML 中的代码

<a href="javascript:foo(1)" target="_parent">

将放置在标题中的javascript称为

<script type="text/javascript" src="http://www.site.com/include/script.js"></script>

定义如下:

function foo(language){
    url = window.parent.location.href;
    parts = url.split('/');
    page = parts[3];

    newUrl = "";

    if (language == 1){
        newUrl = "http://www.site1.com/" + page;
    } else if (language == 2){
        newUrl = "http://www.site2.com/" + page;
    } else{
        newUrl = "http://www.site3.com/" + page;
    }

    window.parent.window.location.href = newUrl;
}

阅读我测试的相关问题更改为window.foo = function(language){...},但没有帮助。

看起来简单明了,但由于某种原因 foo 在 IE 和 firefox 中未定义。

应该添加javascript在“top.html”中,这是每个页面的嵌入iframe。 chrome 以某种方式管理这个,而 IE 没有(但如果我浏览到 http://www.site1.com/top.html 并单击调用重定向(语言)的按钮,脚本可以工作;)

【问题讨论】:

    标签: function internet-explorer firefox undefined referenceerror


    【解决方案1】:

    您的问题是链接是有针对性的(有一个target="_parent" 位)。

    这意味着它在目标窗口的范围内运行,而不是在它所在的窗口中。并且那里没有名为foo的函数。

    【讨论】:

      【解决方案2】:

      看起来您的链接位于“iframe”标签中,但 foo 函数是在顶级窗口对象的范围内定义的。

      有两种方法可以解决这个问题:

      你应该使用window.partent引用顶级窗口对象,尝试将链接更改为

      <a href="javascript:window.partent.foo(1)" target="_parent">
      

      或者,将函数代码移动到与链接相同的 html 文件的头标签中。

      顺便说一句,你应该使用var关键字来声明变量。

      【讨论】:

      • 嗯,我已经测试了这两种选择,但都没有帮助。实际上将 window.parent 添加到调用中会使代码也停止在 chrome 中工作。将代码直接复制到 top.html(而不是通过 标记的相对 URL)是我测试的第一件事,但它在 IE 和 firefox 中仍然显示“未定义函数”。 PS。为了安全起见,还测试了显式声明变量,但这也没关系。
      • 好的,现在很明显有一些声明性的东西。当我在同一个地方放入一个函数 test(){ alter("TEST");} 时,它可以调用它!但是 foo 仍然是未定义的。开始让我紧张了。
      • 啊哈……知道了。一个对我来说并不那么明显的愚蠢错误:它是“target =“_parent”导致了错误。它在开始时链接是静态的,现在我删除它,它突然起作用了。
      猜你喜欢
      • 2014-02-25
      • 1970-01-01
      • 2021-10-08
      • 2012-08-24
      • 2011-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多