2011-12-09 2 views
6

タブを作成しているサードパーティ(mootools)のライブラリがあり、広告を作成しているサイト運営者(dfp)にはgoogle double clickがある。 dfpはiframeに広告を作成し、タブスクリプトはiframeのアンケートを取得し、タブを作成するために 'messes'します。処理中にiframeの内容が失われます。mootoolsで操作するとiframeの内容が消える

私はこれに対処する方法を探しています(タブが読み込まれた後にdfpを実行しようとしましたが、その後Googleスクリプトがクラッシュしました)。

iframeは親ウィンドウとは異なるドメインのもので、iframe内の要素に何かをしようとするものは失敗します。 IFRAMEまたはその祖先は、DOMから切断されているときはいつでも

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

を;'あなたのiFrameのコンテンツがあり、右?コードをトレースするとどうなりますか?実際にiFrameコンテンツが「取り込み」に含まれていますか?そうであれば、機能を踏んでいくうちにどこが失われますか? –

答えて

1

は、IFRAMEの内容がクリアされ、それまたはその祖先が戻って再挿入されたときにはiframeがリロードされます。この不快な動作はFirefoxとWebkitで発生しますが、iframeはIEでリロードされません。回避策として

のiframeタブスクリプトがコンテナにそのことをやって行われ後にのみ追加されるように、あなたはあなたのコードの順序を変更する方法を見つける必要があります。

Chromeには、apendChildではなくadoptNodeで移動するとiframeがリロードされないように見えるオプションがあるようですが、クロスブラウザとは思われません。多くのための

、これと同様の質問を参照してください。私は `VARグラブ= $(コンテンツ)を仮定しているHow to move an iFrame in the DOM without losing its state?

関連する問題