gpt4 book ai didi

javascript - 在子窗口中从父窗口运行 JS 函数?

转载 作者:行者123 更新时间:2023-11-29 22:23:14 26 4
gpt4 key购买 nike

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

示例

我必须访问不同的网站,比如说 site1.comsite2.com

我想从 site1.com 打开 URL 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 函数。

最佳答案

您可以使用 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 中运行(显然)。

关于javascript - 在子窗口中从父窗口运行 JS 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com