24

पर काम नहीं कर रहा है मेरे पास ASP.NET में आईफ़्रेम का उपयोग करने वाली एक बहुत ही संपूर्ण साइट है। मैं एक पुराने नियंत्रण को बदलने के लिए काम कर रहा हूं जिसका उपयोग हम jQuery UI संवादों का उपयोग करने के लिए संवाद दिखाने के लिए कर रहे थे। मैं यह भी सुनिश्चित कर रहा हूं कि आईई 9 में सबकुछ अच्छी तरह से काम करता है।IE9 में iframes में जावास्क्रिप्ट कोड

तथ्य यह है कि आईफ्रेम में दिखाए गए पृष्ठों में जो स्क्रिप्ट आईई 9 में काम नहीं कर रही है। क्यूं कर? क्योंकि ऑब्जेक्ट, ऐरे और स्ट्रिंग अपरिभाषित हैं। कुछ अन्य मुद्दे हो सकते हैं, मैंने केवल इन्हें देखा है।

कुछ संवादों पर iframes का उपयोग रोकने के लिए कोई मौका नहीं है (क्योंकि कई कारण हैं)। और मैं IE8 compability को मजबूर करने के लिए मेटा टैग का उपयोग नहीं करना चाहता हूं। क्या किसी को IE9 में इस बदसूरत बग को ठीक करने का कोई तरीका पता है? एक प्लगइन में iframe की

jQuery कोड मैं jQuery यूआई संवाद विन्यास के लिए बनाया है:

धन्यवाद, डिएगो

संपादित

यहाँ कुछ जानकारी है कि helfull हो सकता है

options.content = $("<iframe>") 
    .attr("src", options.intSrcIframe) 
    .attr("frameborder", 0) 
    .attr("scrolling", options.intIframeScrolling) 
    .css("background-color", options.intBgColorIframe) 
    .attr("height", "100%") 
    .attr("width", "100%"); 

_this.html(options.content); 
+0

आप कैसे जानते हैं कि वे अपरिभाषित हैं? –

+0

क्या आप आईफ्रेम को तुरंत चालू करने के बारे में कुछ नमूना कोड प्रदान कर सकते हैं? उदाहरण के लिए आप iframe में jQuery लोड करते हैं? –

+0

@ ime विदास: मैं दृश्य सुडियो से साइट चला रहा हूं क्योंकि ये परिवर्तन अभी तक लागू नहीं किए गए हैं। – Diego

उत्तर

26

नोट: here आईई 9 से कुछ दस्तावेज हैं जो समझने में मदद कर सकते हैं। इसे साझा करने के लिए @ बेन अमाडा के लिए धन्यवाद।


दिन के बाद पागल दिन जाने के लगभग एक हफ्ते बाद मुझे पता चला।

आईई 9 के साथ समस्या आईफ्रेम में जावास्क्रिप्ट कोड के साथ विशेष रूप से नहीं है। जावास्क्रिप्ट या किसी लाइब्रेरी द्वारा जोड़े गए आईफ्रेम में जावास्क्रिप्ट के साथ भी नहीं (मेरे पास बहुत सारे जेएस पुस्तकालय और प्लगइन्स हैं जो IE9 को खराब कर सकते हैं)।

समस्या तब होती है जब आप आईओआरएम या एक पूर्वजों को डोम के माध्यम से ले जाते हैं। आईई 9 आपके द्वारा किए जाने वाले कदमों के रूप में आईफ्रेम में लोड किए गए पृष्ठ में कोड को मिटा देगा। प्रत्येक बार (लेकिन अंतिम एक) में ऑब्जेक्ट, स्ट्रिंग, ऐरे और अन्य अपरिभाषित होंगे (और अन्य बग भी)।

उदाहरण:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe"); 
iframe.appendTo("body"); 
$("#myIframe").appendTo("form:eq(0)"); 

जावास्क्रिप्ट कोड में "www.example.com" एक बार ऊपर वर्णित त्रुटि के साथ एक बार कोई त्रुटि के साथ निष्पादित किया जाएगा और उसके बाद।

निम्न कोड कोड सिर्फ एक बार और सही ढंग से excecuted हो जाएगा के साथ

:

var iframe = $("<iframe>").attr("src", "www.example.com").attr("id", "myIframe"); 
iframe.appendTo("form:eq(0)"); 

मुझे आशा है कि इस मदद करता है किसी पिछवाड़े में इस दर्द से बचने के लिए,

डिएगो

+1

इस विश्लेषण के लिए धन्यवाद। मैं अपनी वेबसाइट के साथ इस मुद्दे पर बिल्कुल काम करने वाला था और इससे बहुत मदद मिलेगी। –

+2

@ एलियन एबिंग: आपका स्वागत है। खुशी हुई है कि मदद की थी! – Diego

+0

धन्यवाद, बिल्कुल वही समस्या थी। आपने मुझे बहुत निराशा बचाई। –

3

वहाँ एक है यदि आप एक नया तत्व नहीं बना रहे हैं तो मौजूदा आईफ्रेम का उपयोग करके इसे प्राप्त करने का एक ही तरीका।

$(function() { 
    var iframeSrc = $("#iframeid").attr("src"); // capture target URI 
    $("#iframeid").attr("src", "about:blank"); // delay loading until we reposition in the DOM 
    $("#iframeid").appendTo("#newparent").attr("src", iframeSrc); // reposition, load iframe by setting src 
}); 

IE9 या jquery ढांचे को इस समस्या को ठीक करने की आवश्यकता है।

0

मुझे एक समान समस्या है, हालांकि आईफ़्रेम को पृष्ठ से हटाए जाने के बजाय जोड़ा गया है। यह अभी भी एक ही समस्या प्रतीत होता है।

+1

क्या यह डोम में जोड़े जाने के बाद स्रोत सेट है? एक बार डोम में यह स्थानांतरित हो गया है? यदि हां, तो बचने की कोशिश करें। इसके अलावा: यह एक जवाब होना चाहिए? – Diego

+0

स्रोत कभी भी सेट नहीं होता है क्योंकि iframe को केवल एक पृष्ठ सबमिट का लक्ष्य माना जाता है। –

+0

मुझे याद नहीं है कि अगर यह मेरे साथ हुआ (यह बहुत समय पहले था)। – Diego

संबंधित मुद्दे