2012-02-19 4 views
2

私は次のコードで遊んでいます。新しいウィンドウを開き、ファイルから読み込むのではなく、最初から基本的なドキュメントを作成することです。スクリプトやスタイルを含め、ページ全体を動的に作成する

function openNew() { 
    var win = window.open('', 'new') ; 

    win.document.write('<html><head><title>New</title></head><body><div id="wrap">Hello World</div></body></html>') ; 

    var head = win.document.getElementsByTagName('head')[0] ; 

    var style = win.document.createElement('link') ; 
    style.rel = "stylesheet" ; 
    style.type = "text/css" ; 
    style.href = "/css/main.css" ; 
    head.appendChild(style) ; 

    var script = win.document.createElement('script') ; 
    script.type = "text/javascript" ; 
    script.src = "/js/main.js" ; 
    head.appendChild(script) ; 

    return false ; 
} 

document.write部分が動作しているようですが、それ以外は何もしません。あるいは、少なくとも私が言うことができる何も、私はエラーや何かを得ることはありません。私はちょうどdocument.writeの文書の残りの部分でスクリプト部分を書くことを試みたが、それは助けにはならなかった。また、write()の代わりにinnerHTMLを使用してみましたが、それは全く機能しませんでしたし、createElementでドキュメント全体(html、headおよびbodyタグ)を作成していませんでした。

重要性がある場合は、読み込む必要のあるスクリプトは、最初に開くスクリプトと同じものです。なぜそれがそれをするのか分からないが、何とかそれが葛藤を作り出すかどうかはわかりません。ちょうど良い尺度のためにそれを言及。

これは可能ですか?

+0

ページ全体を作成する目的は何ですか? – miqbal

+0

@miqbalユーザーが現在のページを開くことができるようにするが、ページデザインの混乱を招くことはない。必須のスクリプトコンテンツ。 –

答えて

2

文書にアクセスする前に、文書を閉じようとしています。

var win = window.open('...'); 
win.document.open(); 
win.document.write('...'); 
win.document.close(); 

その他のオプションは、文字列を構築して一度に追加し、追加しないことです。

+0

ああ、ありがとう。それを修正した –

+0

他の人の参考文献については、https://developer.mozilla.org/en/DOM/document.openとhttps://developer.mozilla.org/en/DOM/document.closeの注記を参照してください。 'document.open'は現在のドキュメントをクリアします。 – ninjagecko

関連する問題