* 更新:最终我决定由于它对安全性造成的问题而无法完成我想要的东西。 Kalle的答案提供了一个最接近我想要完成的解决方案。 为了解决我的问题,我在两个页面上都创建了脚本,并将使用一种通过服务器路由的推送通知,以便它们进行通信。 谢谢您的帮助!! *
我有两页。两个窗口都已独立存在。第二页有一个在JS中声明的函数。
我希望能够通过单击第一个窗口中的链接来调用窗口2中的函数。
第1页:
<html>
<head>
<title>This is a title!</title>
</head>
<body style="background: lightblue">
<a href="#" target="my_target" onClick="clicked()">Click Me!</a>
</body>
第2页:
<html>
<head>
<META HTTP-EQUIV="Window-target" CONTENT="my_target" />
<title>This is a title!</title>
<script type=text/javascript>
function clicked() {
alert('test');
}
</script>
</head>
<body style="background: lightblue">
</body>
答案 0 :(得分:2)
由于它位于同一个域中,您可以使其工作,但必须改变您的方式。
首先,您必须使用此语法而不是新标签在弹出窗口中打开它:
newwindow=window.open(url,'name','height=200,width=150');
然后你可以在调用弹出窗口后调用newwindow.clicked()
。
刚做了一个快速测试,这将在新标签中打开它。 (对不起,我使用open
功能已经有一段时间了。
newwindow=window.open(url,'name');
还注意到你应该等待弹出窗口加载。所以在我的例子中,它看起来像这样(使用jQuery):
var newwindow = window.open('http://www.tylerbiscoe.com/vb/new.html');
$(newwindow).load(function(){
newwindow.clicked();
});
答案 1 :(得分:1)
好的,全新的答案。我希望这就是你在想的。但是,当您从第1页打开第2页时,基本上,第1页将知道第2页是谁..
在线示例:http://kopli.pri.ee/stackoverflow/6832271.php
Page 1
<html>
<head>
<title>Page 1</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<style>
.ajaxlink {color: blue; cursor: pointer; border-bottom: 1px dotted blue;}
</style>
</head>
<body>
<span id="open_page_2" class="ajaxlink">Open new window</span>
<br>
<br>
<a href="#" target="my_target">Click Me!</a>
<script>
$('#open_page_2').click(function(){
child = window.open('test2.php','page_2','width=600,height=600');
});
$('a[target=my_target]').click(function () {
child.SecondPageFunction();
return false;
});
</script>
</body>
</html>
第2页
<html>
<head>
<title>Page 2</title>
</head>
<body>
<h1>Your seeing page 2!</h1>
<script>
function SecondPageFunction () {
alert('Second page action got triggered!');
}
</script>
</body>
</html>
答案 2 :(得分:0)
该脚本必须是您在新窗口中打开的页面的一部分。如果允许的话,你是完全正确的,这是一个安全漏洞。
答案 3 :(得分:0)
你可以添加一些查询字符串参数,这些参数可以在你打开的页面中通过javascript获取onload,如果查询字符串arg存在,则调用你的函数。