2009-09-29 13 views
6

Jak mogę wstawić wszystkie arkusze stylów okna nadrzędnego do główki elementu iframe (samedomain)?jquery wstawianie wszystkich arkuszy stylów do iframe

Moja próba kod oparty na podobnym pytaniem:

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(); 
} 

Oczywiście to nie działa poza IE. Z góry dziękuję.

Edit: Próba na podstawie odpowiedzi Antoniego:

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

napisana przez pierwszą funkcję, która stwarza wątpliwości, czy elementy iframe zawierają kod HTML lub są puste? –

Odpowiedz

3

Problem z wybraną odpowiedzią jest to, że wykorzystuje .html(), który zwraca tylko wewnętrzne zawartość html tego elementu, a nie sam element. Oto działające rozwiązanie:

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

Atrybut type jest opcjonalny w tagach odnośników arkusza stylów w HTML5, lepiej użyć '$ (" link [rel = 'stylesheet'] ")'. –

+0

Lub przejdź do pełnej trifecta: '$ (" link [rel = 'arkusz stylów'], link [type = 'text/css'], link [href $ = '. css'] ") –

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

masz na myśli ten klon? Ponieważ w przeciwnym razie przeniesie się arkusz stylów. Mimo to nie działam tak. – Mark

+0

Nie, chodzi mi o dołączenie, ale zamierzałem również dopisać html, przepraszam. Czy edycja działa? Jeśli nie, upewnij się, że selektor elementu iframe działa. Coś prostego jak "alert ($ (" iframe "). Contents(). Find (" title "). Text()' .Format iframe pochodzi bezpośrednio z jquery – Anthony

+0

Przepraszam, trochę pomieszałem, ale wers Mam pytanie, które zadziałałoby, dziękuję – Mark

Powiązane problemy