2

想在子窗口中从父窗口运行javascript函数

例子

我不得不说不同的site1.com网站site2.com

我想从site1.com打开 URL 的新窗口site2.com

new_window = window.open("site2.com/index.php", "window2");

然后我想test()在这个 new_window 上运行一个 js 函数。

// Where site2.com/index.php 
<html>
    ......
</html>
<script>
   function test(){
    // some code here
   }
</script>

概括

想要打开新窗口(子窗口)并从父窗口运行一些 JS 函数。

4

2 回答 2

4

您可以使用跨文档消息传递来规避同源策略,如下所示。

父窗口 ( site1.com):

var site2 = window.open("http://site2.com");
site2.postMessage("test", "http://site2.com");

子窗口 ( site2.com):

function test() {
    // some code here
}

window.addEventListener("message", function (event) {
    if (event.origin === "http://site1.com") {
        var funct = window[event.data];
        if (typeof funct === "function")
            funct();
    }
}, false);

这是一个简单的例子。您可以使其更复杂,以允许回调、返回值等,但这需要一篇博文进行全面解释。

window.postMessage您可以在Mozilla Developer Network上阅读更多信息。

但是请注意,以下示例在 Internet Explorer 中不起作用(显然)。

于 2012-06-13T08:42:02.177 回答
0

你不能,如果出于安全原因,它不在同一个域中,你必须从子窗口运行你的函数。

于 2012-06-13T08:23:45.463 回答