क्या यह एक div की शैलियों को बदलना संभव है जो केवल CSS का उपयोग करके पृष्ठ पर एक iframe के अंदर रहता है?
क्या यह एक div की शैलियों को बदलना संभव है जो केवल CSS का उपयोग करके पृष्ठ पर एक iframe के अंदर रहता है?
जवाबों:
आपको जावास्क्रिप्ट की आवश्यकता है। यह मूल पृष्ठ में इसे करने के समान है, सिवाय इसके कि आप अपने जावास्क्रिप्ट कमांड को iframe के नाम से उपसर्ग करें।
याद रखें, एक ही मूल नीति लागू होती है, इसलिए आप इसे केवल एक iframe तत्व के लिए कर सकते हैं जो आपके स्वयं के सर्वर से आ रहा है।
मैं इसे आसान बनाने के लिए प्रोटोटाइप ढांचे का उपयोग करता हूं :
frame1.$('mydiv').style.border = '1px solid #000000'
या
frame1.$('mydiv').addClassName('withborder')
संक्षेप में।
आप सीएसएस को HTML में लागू नहीं कर सकते हैं जो एक iframe में लोड किया गया है, जब तक कि आपके पास क्रॉस-डोमेन संसाधन प्रतिबंधों के कारण iframe में लोड किए गए पृष्ठ पर नियंत्रण नहीं है।
हाँ। विवरण के लिए इस अन्य सूत्र पर एक नज़र डालें: CSS को iframe में कैसे लागू करें?
var cssLink = document.createElement("link");
cssLink.href = "style.css";
cssLink.rel = "stylesheet";
cssLink.type = "text/css";
frames['frame1'].document.body.appendChild(cssLink);
frame1
आइफ्रेम नाम है, आईडी नहीं
आप iframe
पहले की सामग्री को पुनः प्राप्त कर सकते हैं और फिर jQuery
हमेशा की तरह उनके खिलाफ चयनकर्ताओं का उपयोग कर सकते हैं ।
$("#iframe-id").contents().find("img").attr("style","width:100%;height:100%")
$("#iframe-id").contents().find("img").addClass("fancy-zoom")
$("#iframe-id").contents().find("img").onclick(function(){ zoomit($(this)); });
शुभ लाभ!
त्वरित उत्तर है: नहीं, क्षमा करें।
यह सिर्फ CSS का उपयोग करना संभव नहीं है। मूल रूप से आपको इसे स्टाइल करने के लिए iframe कंटेंट पर नियंत्रण रखना होगा। जावास्क्रिप्ट या अपनी पसंद की वेब भाषा का उपयोग करने के तरीके हैं (जो मैंने थोड़ा पढ़ा है, लेकिन खुद से परिचित नहीं हूं) कुछ आवश्यक शैलियों को गतिशील रूप से सम्मिलित करने के लिए, लेकिन आपको iframe सामग्री पर सीधे नियंत्रण की आवश्यकता होगी, जो इसे लगता है जैसे आपके पास नहीं है।
Jquery का उपयोग करें और स्रोत के लोड होने तक प्रतीक्षा करें, यह है कि मैंने कैसे हासिल किया है (प्रयुक्त कोणीय अंतराल, आप जावास्क्रिप्ट सेटइंटरवल विधि का उपयोग कर सकते हैं):
var addCssToIframe = function() {
if ($('#myIframe').contents().find("head") != undefined) {
$('#myIframe')
.contents()
.find("head")
.append(
'<link rel="stylesheet" href="app/css/iframe.css" type="text/css" />');
$interval.cancel(addCssInterval);
}
};
var addCssInterval = $interval(addCssToIframe, 500, 0, false);
शायद आप जैसा सोच रहे हैं वैसा नहीं है। iframe को <link>
css फ़ाइल में भी होना चाहिए। और आप इसे जावास्क्रिप्ट के साथ भी नहीं कर सकते हैं अगर यह एक अलग डोमेन पर है।
<iframe src="/source" link=css-stylesheet:"/css.css">
?
जाहिरा तौर पर यह jQuery के माध्यम से किया जा सकता है:
$('iframe').load( function() {
$('iframe').contents().find("head")
.append($("<style type='text/css'> .my-class{display:none;} </style>"));
});
Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin **** from accessing a cross-origin frame.
चीजों को करने का एक तरह का हैक-ईश तरीका यूजीन ने कहा है। मैंने उनके कोड का पालन किया और पेज के लिए अपने कस्टम सीएसएस से लिंक किया। मेरे लिए समस्या यह थी कि, एक ट्विटर टाइमलाइन के साथ, आपको अपने कोड को स्मिडेन को ओवरराइड करने के लिए ट्विटर के कुछ साइडस्टैपिंग करने होंगे। अब हमारे पास अपनी सीएसएस के साथ एक रोलिंग टाइमलाइन है, IE लार्जर फॉन्ट, उचित लाइन ऊंचाई और स्क्रॉलबार को अपनी सीमा से बड़ी ऊंचाई के लिए छिपाकर।
var c = document.createElement('link');
setTimeout(frames[0].document.body.appendChild(c),500); // Mileage varies by connection. Bump 500 a bit higher if necessary
बस इसे जोड़ें और सभी अच्छे से काम करें:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
हां, यह संभव है, हालांकि बोझिल है। आपको पृष्ठ के HTML को अपने पृष्ठ के शरीर में प्रिंट / इको करना होगा फिर CSS नियम परिवर्तन फ़ंक्शन लागू करना होगा। ऊपर दिए गए समान उदाहरणों का उपयोग करते हुए, आप अनिवार्य रूप से पृष्ठ में divs को खोजने की एक पार्सिंग विधि का उपयोग कर रहे होंगे, और फिर सीएसएस को उस पर लागू कर सकते हैं और फिर इसे अंतिम उपयोगकर्ता को रिप्रजेंट कर रहे हैं / गूंज रहे हैं। मुझे इसकी आवश्यकता नहीं है इसलिए मैं उस फ़ंक्शन को किसी अन्य वेबपेज के सीएसएस में हर आइटम में केवल एफटीपी के लिए कोड नहीं करना चाहता हूं।
संदर्भ:
विभिन्न समाधानों को मिलाकर, यह मेरे लिए काम किया है।
$(document).ready(function () {
$('iframe').on('load', function() {
$("iframe").contents().find("#back-link").css("display", "none");
});
});
क्लाइंट की तरफ से संभव नहीं। एक जावास्क्रिप्ट त्रुटि उठाई जाएगी "त्रुटि: संपत्ति" दस्तावेज़ "तक पहुंचने की अनुमति से इनकार कर दिया जाता है क्योंकि इफ्रेमी आपके प्रभुत्व का हिस्सा नहीं है। एकमात्र उपाय पृष्ठ को सर्वर साइड कोड से लाना और आवश्यक सीएसएस को बदलना है।