如何在打开的子窗口中调用javascript函数
我有一个父html文件,希望用户单击某个内容,然后打开一个新窗口(或选项卡),其中包含父目录中div的(动态生成的)内容(隐藏在父目录中) 从我在这里和其他地方的阅读来看,类似的东西应该是可行的: parent.html如何在打开的子窗口中调用javascript函数,javascript,html,Javascript,Html,我有一个父html文件,希望用户单击某个内容,然后打开一个新窗口(或选项卡),其中包含父目录中div的(动态生成的)内容(隐藏在父目录中) 从我在这里和其他地方的阅读来看,类似的东西应该是可行的: parent.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Parent</title>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Parent</title>
<script src="/js/jquery-1.11.0.min.js"></script>
</head>
<body>
<div id="from">
html from parent
</div>
<div id="launcher">
launch child
</div>
<script type="text/javascript">
$("#launcher").click(function() {
var child = window.open('child.html', '_blank', '', false);
if (child) {
var html = $("#from").html();
//window.setTimeout(child.addHTML(html), 5000);
child.addHTML(html);
}
else {
alert('Please allow popups for this site');
}
});
</script>
</body>
</html>
我做错了什么?有更好的方法来实现我的目标吗?窗口的第一个参数。setTimeout应该是要执行的函数 试试这个:
if (child) {
var html = $("#from").html();
window.setTimeout(function(){child.addHTML(html);}, 5000);
}
我建立了一个小例子:
如果目标只是添加内容,而不是调用函数,您可以这样做
if (child) {
child.addEventListener('load', function () {
var html = $("#from").html();
$('#to',child.document).html(html)
});
}else {
alert('Please allow popups for this site');
}
这不是问题所在,但那样调用
setTimeout()
不会有任何好处。您要求在5秒内调用child.addHTML()
的结果<将立即调用code>child.addHTML(),以获取结果。这样可以。。。现在有没有一种方法可以做到这一点,而不用猜测要使用什么超时,或者等待的时间太长,或者不够长?是的,您可以使用child.addEventListener('eventname',function(){…},true);我已经更新了JSFIDLE:
if (child) {
var html = $("#from").html();
window.setTimeout(function(){child.addHTML(html);}, 5000);
}
if (child) {
child.addEventListener('load', function () {
var html = $("#from").html();
$('#to',child.document).html(html)
});
}else {
alert('Please allow popups for this site');
}