ReferenceError foo未定义(在IE和Firefox中)

时间:2013-11-20 08:05:34

标签: function internet-explorer firefox undefined referenceerror

查看问题并且“ReferenceError foo未定义”主题上几乎没有类似的问题。但是,我无法在代码中检测到错误并使其正常工作。它适用于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并点击调用重定向(语言)的按钮,脚本就可以工作;)

2 个答案:

答案 0 :(得分:1)

您的问题是该链接已定位(具有target="_parent"位)。

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

答案 1 :(得分:0)

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

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

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

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

或者,将功能代码移动到与链接相同的html文件的head标记。

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