2009-09-29 14 views
6

में सभी स्टाइलशीट डालने में jquery मैं सभी मूल विंडो की स्टाइलशीट को 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

पहले फ़ंक्शन द्वारा लिखित, जो संदेह पैदा करता है, क्या iframes में HTML शामिल है या खाली हैं? –

उत्तर

3

चयनित जवाब से जुड़ा एक मुद्दा यह है कि यह .html() का उपयोग करता है, जो उस तत्व का ही भीतरी एचटीएमएल सामग्री, नहीं तत्व में ही रिटर्न है। यहां एक कामकाजी समाधान है:

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

टाइप विशेषता विशेषता एचटीएमएल 5 में स्टाइलशीट लिंक टैग पर वैकल्पिक है, '$ ("लिंक [rel =' स्टाइलशीट ']") का उपयोग करने के लिए बेहतर है। –

+0

या पूर्ण ट्राइफेक्टा के लिए जाएं: '$ (" लिंक [rel = 'स्टाइलशीट'], लिंक [टाइप = 'टेक्स्ट/सीएसएस'], लिंक [href $ = '। css'] ") –

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

आपका मतलब यह है। सही है? क्योंकि अन्यथा स्टाइलशीट को स्थानांतरित किया जाएगा। फिर भी, मुझे यह काम करने के लिए नहीं मिल रहा है। – Mark

+0

नहीं, मेरा मतलब है संलग्न करना, लेकिन मैं भी HTML को जोड़ने के लिए निर्दिष्ट करना चाहता था, क्षमा करें। क्या संपादन काम करता है? यदि नहीं, तो सुनिश्चित करें कि iframe चयनकर्ता काम करता है। कुछ चेतावनी जैसे 'अलर्ट ($ ("iframe")। सामग्री()। ढूंढें ("शीर्षक")। टेक्स्ट() '। Iframe कोड सीधे jquery से है। – Anthony

+0

क्षमा करें, मैंने कुछ छोटी चीज गड़बड़ी की, लेकिन बनाम मेरे पास सवाल होगा। धन्यवाद। – Mark