43

この問題を解決する方法がわかりません。多くの投稿を読んでみましたが、誰も答えていません。

(同じドメイン内で) 既にコーディングされているページを含む新しいウィンドウを開き、いくつかのコンテンツを追加する必要があります。

問題はOpenWindow.write()、ページがまだロードされていないか、すべてをオーバーライドして、書き込みによって追加されたコードのみが表示される場合です。

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
OpenWindow.document.write(output);

output追加する必要があるコードです。

少なくとも Firefox、IE、および GC で動作する必要があります。

前もって感謝します。JQuery を使用する必要がある場合は問題ありません。

4

6 に答える 6

54

新しいタブ/ウィンドウを開きたい場合 (ブラウザの設定のデフォルトによって異なります):

output = 'Hello, World!';
window.open().document.write(output);

たとえば、出力がObjectJSON を取得する場合 (Base64 でエンコードされた画像であっても、任意のタイプのドキュメントを生成できます)

output = ({a:1,b:'2'});
window.open('data:application/json;' + (window.btoa?'base64,'+btoa(JSON.stringify(output)):JSON.stringify(output)));

アップデート

Google Chrome (60.0.3112.90) は次のコードをブロックします:

Not allowed to navigate top frame to data URL: data:application/json;base64,eyJhIjoxLCJiIjoiMiJ9

既存のページにデータを追加したい場合

output = '<h1>Hello, World!</h1>';
window.open('output.html').document.body.innerHTML += output;

output = 'Hello, World!';
window.open('about:blank').document.body.innerText += output;
于 2013-05-31T09:26:54.847 に答える
27

parent.htmlで:

<script type="text/javascript">
    $(document).ready(function () {
        var output = "data";
        var OpenWindow = window.open("child.html", "mywin", '');
        OpenWindow.dataFromParent = output; // dataFromParent is a variable in child.html
        OpenWindow.init();
    });
</script>

child.html:

<script type="text/javascript">
    var dataFromParent;    
    function init() {
        document.write(dataFromParent);
    }
</script>
于 2012-05-06T19:15:08.630 に答える
7

これがあなたが試すことができるものです

  • mypage.html内に、htmlの処理(追加など)を実行する関数say init()を記述します。
  • domの準備ができたらOpenWindow.document.write(output);電話する代わりにOpenWindow.init()

したがって、親ウィンドウには

    OpenWindow.onload = function(){
       OpenWindow.init('test');
    }

と子供に

    function init(txt){
        $('#test').text(txt);
    }
于 2012-05-06T18:16:16.920 に答える
3

ページが読み込まれた後に呼び出すとdocument.write、すべてのコンテンツが削除され、指定したパラメーターに置き換えられます。代わりに、DOM メソッドを使用してコンテンツを追加します。次に例を示します。

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
var text = document.createTextNode('hi');
OpenWindow.document.body.appendChild(text);

jQuery を使用したい場合は、より優れた API を利用できます。例えば:

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
$(OpenWindow.document.body).append('<p>hi</p>');

新しいウィンドウの DOM の準備ができた後にコードを実行する必要がある場合は、次を試してください。

var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1');
$(OpenWindow.document.body).ready(function() {
    $(OpenWindow.document.body).append('<p>hi</p>');
});
于 2012-05-06T18:50:18.173 に答える