2009-09-29 7 views
6

iframeの頭(samedomain)に親ウィンドウのスタイルシートをすべて挿入するにはどうすればよいですか?jquery iframeにすべてのスタイルシートを挿入

私は同様の質問に基づいてコードを実行しようとしました:

function() { 
    var d = frames[0].document; 
    var stylesheets = $("link").outerhtml; 
    d.open(); 
    d.write(
    '<html><head>'+ 
    stylesheets + 
    '<style type="text/css">'+ 
    '<\/style><\/head><body><\/body><\/html>' 
    ); 
    d.close(); 
} 

を明らかにこれはIE以外では動作しません。前もって感謝します。

編集:アンソニーの回答に基づいて試み:

$("link[type='text/css']").each(function() { 
     var stylesheet = $(this).clone();          
     $("iframe").contents().find("head").append(stylesheet); 
    }); 
+0

iframeにはHTMLが含まれているか、または空白であることが疑わしい最初の関数で記述されていますか? –

答えて

3

問題選択した答えとは、その要素ではなく、要素自体の内部のみHTMLコンテンツを返す、それは.html()を使用していることです。

$("link[type='text/css']").clone().appendTo($("iframe").contents().find("head")); 
+2

HTML5のスタイルシートのリンクタグではtype属性がオプションで、 '$(" link [rel = 'stylesheet'] ")'を使用する方が良いでしょう。 –

+0

または完全なtrifectaのために行く:リンク[type = 'text/css']、リンク[href $ = '。css'] ")' $( "link [rel = 'stylesheet' –

0
$("link[type='text/css']").each(function() { 
    var stylesheet = $(this).html(); 
    $("iframe").contents().find("head").append(stylesheet); 
    }); 
+0

あなたはこれを意味します.clone right?さもなければ、それはスタイルシートを動かすだろうから。それでも、私はこれを動作させるつもりはありません。 – Mark

+0

いいえ、私は追加を意味しましたが、htmlを追加するように指定することもできました。編集は機能しますか?そうでない場合は、iframeセレクタが動作していることを確認してください。 iframeコードはjqueryからまっすぐです。 – Anthony

+0

申し訳ありませんが、私はちょっとしたことを混乱させましたが、 – Mark

関連する問題