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 タグに到達できないようです。

私もreadyメソッドを使ってみました。

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

これは、ポップアップの下のウィンドウに追加しても機能しませんでした。

ここで明確にするために、JSをmypage.htmlに直接追加するつもりはありません。popup mypage.html body タグにアクセスし、それに 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 の 2 番目の引数として使用すると、新しいウィンドウにコンテキストが設定されます。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 の $() 演算子は、ページが「準備完了」のときに実行する必要があります。コードを少し単純化してみてはいかがでしょうか。

私は次のようにします:

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