0

我从 iframe 中调用 javascript 以重定向到另一个 url。

var new_url  = "http://mysite.com/?language=en&origin="
                    + origin +"&destination="+ destination +                    "&Date=" + date;
    }
    //window.location.replace(new_url);
    window.top.location.href = new_url;
    //window.location.assign(new_url);

目的是在同一窗口中从 iframe 打开页面,所以我正在使用

window.top.location.href = new_url;

它在 IE 中运行 finr 但在 chrome 和 FF 中运行但也没有给出任何错误

4

4 回答 4

3

最新的浏览器有严格的规定,不允许改变,只有在:

  1. A 和 B 的位置具有相同的来源,也就是说它们具有相同的方案、主机和端口(例如 HTTP、stackoverflow.com、80),或者
  2. B 是顶级窗口,A 是嵌套在 B 中某个深度的框架中的窗口(直接子级、子级的子级等),或
  3. B 是使用 window.open 打开的窗口,A 可以更改打开 B 的窗口的位置(因此 B 是由 A 打开的弹出窗口、由 A 打开的弹出窗口或更深的窗口),或
  4. B 不是顶级窗口,而是它的父窗口,或者它的父窗口,或者在类似数量的父窗口中,该窗口和 A 的位置是同源的
于 2013-09-10T05:31:55.840 回答
1

是的,您可以将 window.location.href 用于您的案例。

但我想解释一下两者之间的区别。

window.location.href 返回当前页面的位置。

top.location.href(它是 window.top.location.href 的别名)返回窗口层次结构中最顶层窗口的位置。如果窗口没有父窗口,top 是对自身的引用(换句话说,window === window.top)。

当您处理框架和处理已被其他页面打开的窗口时,top 很有用。例如,如果您有一个名为 test.html 的页面,其中包含以下脚本:

var newWin=window.open('about:blank','test','width=100,height=100');
newWin.document.write('<script>alert(top.location.href);</script>');

生成的警报将具有 test.html 的完整路径——而不是 about:blank,这是 window.location.href 将返回的内容。

干杯!!!

于 2013-09-10T05:35:03.417 回答
1

仅尝试此操作,不需要顶部。

window.location.href = new_url;
于 2013-09-10T05:27:02.110 回答
1

我刚刚添加

window.event.returnValue = false;

在重定向之前,它可以在所有浏览器中运行

于 2013-09-10T05:44:38.890 回答