2

我正在尝试通过 window.open() 方法将一大块 html 附加到加载的 html 页面。对于此示例,html 块将是一个字符串。

var w = window.open('mypage.html, 'windowname', 'scrollbars=yes,location=no,toolbar=no,status=no,width=500,height=550,left=300,top=50');
var htmlChunk = '<span>bla bla</span>'
 $(w.document.body).append( htmlChunk );

$(w.document.body) 似乎无法访问弹出窗口内 mypage.html 上的 body 标记。

我也尝试使用现成的方法。

 $(w.document.body).ready(function(){
         $(this).find('body').append(htmlChunk);
     });

这不起作用,或者将其附加到弹出窗口下方的窗口中。

在这里要清楚一点,我不想直接将任何 JS 添加到 mypage.html 中。我需要能够访问弹出 mypage.html 正文标记并将一大块 html 附加到该标记。我的设置,我在 main.html 页面中有一个 js 文件。在 main.html 页面中,我有一个链接,该链接上有一个在 js 文件中设置的点击事件。这是我调用弹出窗口的地方,我从 main.html 页面捕获一个 html 块以附加到弹出窗口内的 mypage.html。

4

3 回答 3

4

你可以这样做:

$(w).on("load", function(){
    $("body", w.document).append( htmlChunk );
});

onload 事件处理程序使代码等待新窗口创建完成,并使用w.documentjQuery 的第二个参数设置新窗口的上下文。您不能从子窗口运行 jQuery 实例,因为它不加载 jQuery。

于 2013-04-25T14:56:45.420 回答
0
<script type="text/javascript">
    $(document).ready(function () {
        var output = "data";
        var OpenWindow = window.open("mypage.html", "mywin", '');
        OpenWindow.dataFromParent = output; // dataFromParent is a variable in mypage.html
        OpenWindow.init();
    });
</script>

在 mypage.html 中:

<script type="text/javascript">
    var dataFromParent;    
    function init() {
        document.write(dataFromParent);
    }
</script>

如果您需要在新窗口的 DOM 准备好后运行代码,请尝试以下操作:

var OpenWindow = window.open("mypage.html", "mywin", '');
$(OpenWindow.document.body).ready(function() {
    $(OpenWindow.document.body).append('<p>hi</p>');
});
于 2013-04-25T14:32:22.153 回答
0

如果我没有弄错 jQuery 中的 $()-operator 应该在页面“准备好”时运行。所以你可以试着简化你的代码吗?

我会这样做:

$(function(){
    $("body").append("This is the string you send in");
});
于 2013-04-25T14:21:50.163 回答