查看问题并且“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并点击调用重定向(语言)的按钮,脚本就可以工作;)
答案 0 :(得分:1)
您的问题是该链接已定位(具有target="_parent"
位)。
这意味着它在目标窗口的范围内运行,而不是在它所在的窗口中运行。并且在那里没有名为foo
的函数。
答案 1 :(得分:0)
看起来您的链接位于“iframe”标记中,但foo
函数是在顶级窗口对象的范围内定义的。
有两种方法可以解决这个问题:
您应该使用window.partent
来引用顶级窗口对象,尝试将链接更改为
<a href="javascript:window.partent.foo(1)" target="_parent">
或者,将功能代码移动到与链接相同的html文件的head标记。
顺便说一下,您应该使用var
关键字来声明变量。