2011-12-09 10 views
6

मुझे एक तीसरी पार्टी (mootools) लाइब्रेरी बनाने वाले टैब मिल गए हैं और मुझे विज्ञापन बनाने वाले प्रकाशकों (डीएफपी) के लिए Google डबल क्लिक मिला है। डीएफपी विज्ञापनों को आईफ्रेम में बनाता है तो टैब स्क्रिप्ट टैब बनाने के लिए आईफ्रेम और 'मैसेज' के एक एन्केस्टर को पकड़ लेती है। प्रक्रिया में आईफ्रेम की सामग्री खो जाती है।iframe सामग्री mootools द्वारा छेड़छाड़ की जाती है

मैं इस के साथ मुकाबला करने का एक तरीका ढूंढ रहा हूं (टैब लोड होने के बाद dfp सामान को फायर करने का प्रयास किया लेकिन फिर Google स्क्रिप्ट क्रैश हो गईं)।

आईफ्रेम एक अलग डोमेन से मूल विंडो में है, इसलिए जो कुछ भी आईफ्रेम के भीतर तत्वों को सामान करने की कोशिश करता है, वह असफल हो रहा है।

addTab: function(text, title, content) { 
    var grab = $(content); 
    var container = (grab || new Element('div')) 
     .setStyle('display', 'none') 
     .addClass(this.options.classContainer); 
    this.wrapper.adopt(container); 
    var pos = this.tabs.length; 
    var evt = (this.options.hover) ? 'mouseenter' : 'click'; 
    var tab = { 
     container: container, 
     toggle: new Element('li').grab(new Element('a', { 
      href: '#', 
      title: title 
     }).grab(
      new Element('span', {html: text}) 
     )).addEvent(evt, this.onClick.bindWithEvent(this, [pos])).inject(this.menu) 
    }; 
    if (!grab && $type(content) == 'string') tab.url = content; 
    this.tabs.push(tab); 
    return this.fireEvent('onAdded', [tab.toggle, tab.container, pos]); 
}, 
+0

मैं' वर हड़पने = $ (सामग्री) संभालने हूँ:

अधिक के लिए

, इस समान प्रश्न देखते हैं? जब आप अपने कोड के माध्यम से पता लगाते हैं तो क्या होता है? क्या "हड़पने" में वास्तव में आईफ्रेम सामग्री अपेक्षित है? यदि ऐसा है, तो आप अपने कार्य के माध्यम से कदम उठाते हैं, यह कहां खो जाता है? –

उत्तर

1

जब भी एक iframe या यह के एक पूर्वज डोम से काट दिया जाता है, iframe की सामग्री को साफ कर दिया जाएगा और जब यह या अपने पूर्वज वापस पुनः लगाए आइफ्रेम को फिर से लोड होगा। फ़ायरफ़ॉक्स और वेबकिट में यह कष्टप्रद व्यवहार होता है, लेकिन मुझे लगता है कि आईफ़्रेम आईई पर पुनः लोड नहीं होंगे।

कामकाज के रूप में, आपको अपने कोड को पुन: व्यवस्थित करने का एक तरीका ढूंढना होगा ताकि iframe केवल के बाद जोड़ा गया हो, टैब स्क्रिप्ट कंटेनर को अपनी बात कर रही है।

क्रोम के पास भी एक विकल्प है जो iframe को फिर से लोड नहीं करता है अगर आप इसे apendChild के बजाय adoptNode के साथ ले जाते हैं लेकिन मुझे विश्वास नहीं है कि यह क्रॉस-ब्राउज़र है। ; `अपने iFrame सामग्री, सही है How to move an iFrame in the DOM without losing its state?

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