使用JQuery访问新窗口的DOM

时间:2011-10-17 01:02:24

标签: javascript jquery popupwindow

我正在创建一个新窗口,其中包含用户将要打印的文本。 我想做类似的事情:

var new_win = window.open();
$(new_win.document).html("Test");

3 个答案:

答案 0 :(得分:10)

在这种情况下,您正在尝试访问没有jQuery增强功能的dom。您需要先将jquery.js加载到此文档中。如果完成,语法将是。

var popup = window.open('/some/url.html');
popup.document.$('body').html('test');

但要非常小心,在多文档管理和通信中,许多不同的浏览器版本和供应商之间存在许多错误和不便。

如果将通信保持在绝对最小值,并且只是将另一个完整的html文件加载到弹出窗口中,那真的会更好。

答案 1 :(得分:1)

在我们的MVC Web应用程序中,我们需要打开一个新选项卡并展示产品的演示。为此,我们需要在演示模式中应用一些限制,然后单击一个按钮以播放视频。我们这样做是这样的:

DemoTab = window.open("someUrl/demo", "_blank");
if (DemoTab) {                                
    $(DemoTab.document).ready(function () {        
        $("#hideInDemo", DemoTab.document).removeClass('floatContainer');
        $("#hideInDemo", DemoTab.document).css('display', 'none');
        $("#play", DemoTab.document).trigger('click');
    }); 
}

仅适用于Chrome和Edge。

因此,我们通过调用加载页面的动作控制器来解决了该问题。我们只是通过ViewBag传递了一个参数进行查看,并在准备文档时检查了该参数,因此我们知道它需要演示。因此,我们运用了局限性。

答案 2 :(得分:-1)

要打开弹出窗口并修改其内容,您可以使用此代码

var popup = window.open('/' + window.URL_PREFIX + 'print/', '_blank');

popup.onload = function() {
    $(popup.document.body).html('hello');
};