想在子窗口中从父窗口运行javascript函数
示例
我必须在不同的网站上说site1.com
和site2.com
我希望site1.com
打开网址site2.com
new_window = window.open("site2.com/index.php", "window2");
然后我想在这个new_window上运行一个js函数test()
。
// Where site2.com/index.php
<html>
......
</html>
<script>
function test(){
// some code here
}
</script>
摘要
想要打开新窗口(子窗口)并从父窗口运行一些JS函数。
答案 0 :(得分:2)
您可以使用cross document messaging规避相同的原始政策,如下所示。
父窗口(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);
这是一个简单的例子。您可以使其更复杂,允许回调,返回值等,但这需要完整解释博客文章。
您可以在Mozilla Developer Network上详细了解window.postMessage
。
但请注意,以下示例在Internet Explorer中无效(显然)。
答案 1 :(得分:0)
您不能,出于安全原因,如果它不在同一个域中,则必须从子窗口运行您的函数。