2009-05-05 12 views
3

現在の文書DOMの<head>タグにHTML文字列を挿入する必要があります.1つはdiv要素を作成し、innerHTMLを埋め、item-byをコピーしますあなたの<head>要素に-itemを入力します。しかし、FF30ではの両方ともの両方のメソッドが完全に機能し、ブラウザは追加されたSTYLE/SCRIPT要素を処理しますが、これらのメソッドはIE/Operaでは以下の理由で機能しません。文書のHEADに動的にHTML文字列を挿入する

文字列を<head>に直接挿入して処理できる他の方法はありますか?


(これらはIE /オペラに失敗する理由)

方法1 - innerHTMLのは解析できないのでを失敗/ META、スタイル、文字列内のスクリプト要素

insertHtml = function(parentElem,htmlStr){ 

    var frag = document.createDocumentFragment(); 
    var temp = document.createElement('div'); 
    temp.innerHTML = htmlStr; 

    // at this point, temp.childNodes.length=0 

    while (temp.firstChild) { 
     frag.appendChild(temp.firstChild); 
    } 
    // use native DOM methods to insert the fragment 
    parentElem.insertBefore(frag, parentElem.childNodes[0]); 
} 

を無視

方法2 - が追加されました。追加されたSTYLE/SCRIPT要素がブラウザによって処理されないため、

document.getElementsByTagName("head")[0].innerHTML = htmlStr 
// although this populates the <head> tag successfully 
+0

最初の関数を使用しても 'div'を 'head'に変更するとどうなりますか? – Greg

+0

その後、IE/OperaはinnerHTMLの割り当て後にクラッシュします。どうやらあなたはcreateElement( 'head')を作成することはできません! –

答えて

2

ここでは、問題を解決するための愚かなハックがあります。

+0

これは動作しますが、追加されたSTYLE/SCRIPT要素はまだIE7で処理されませんが、Opera9/FF3/Safari4はうまく動作します。 –

+0

IE6でテストしたところ、うまくいきました。私はIE8とIE8でIE7モードで家に帰るときに、私もこれらの回避策ができるかどうか試してみます。 –

+0

上記の設定でテストしたところ、うまくいくようです。私はテストするために純粋なIE7インストールを持っていません。 –

関連する問題