1

我有以下“/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()。当手动在主窗口中单击此按钮时,它确实有效。但是从上面的子窗口调用时它不起作用

4

0 回答 0