我有以下“/tmp/d.html”,
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
var child = null;
$(function() {
$("#buttonToOpenAnotherWindow").click(function(e) {
e.preventDefault();
child = window.open('file:///tmp/a.html');
$(child.document).ready(function(){
//alert('child');
$("body", child.document).append( 'ffffffffffffffffffffffffffffff');
});
});
});
</script>
<a href="#openAnother" id="buttonToOpenAnotherWindow">Open Another Window</a>
(只显示主要部分)我的意图是单击该按钮,然后它会打开另一个页面,然后我将修改该子窗口页面。当我在 linux 上的 firefox 23.0 上尝试这个时,我确实看到第二个窗口打开了,它的页面显示“ffffffffffffffffffffffff”,但很快“/tmp/a.html”的原始内容替换了页面,并且“ffffffffffffffff”离开了。不知何故,如果我在 append() 之前放置一个调试器中断,它会按我的预期工作。
我这样做的最终目标是启动一个子窗口,用 jquery 修改子窗口,以便它自动单击一个按钮(从该页面下载一个文件),然后在 .ajax() 下载完成后,关闭子窗口---- 为此,我需要从父窗口获取 .ajax() 返回的延迟 obj 的句柄。但是我可能遇到的一个终端阻止程序是跨域:如果我在子窗口中打开另一个域,则父窗口将无法修改其内容。然后我必须在子窗口中使用greasemonkey,但是我将无法等待子窗口中的延迟obj,并在下载完成后关闭窗口。
谢谢杨
- - 更新
在 onload() 实际使子运行后,我遇到了跨域问题,现在我从子窗口尝试了以下代码:
$('body', window.opener.document).append('child child child');
$('#closechild', window.opener.document).trigger('click');
奇怪的是,第一行有效,但第二行无效。我的意图是父母中的“#closechild”按钮会调用childwindow.close()。当手动在主窗口中单击此按钮时,它确实有效。但是从上面的子窗口调用时它不起作用