2012-04-13 6 views
2

Ich habe eine Website basierend auf SocialEngine 4, die moo-tools-1.2.5 verwendet. Es gibt einen Iframe mit einigen js, der sich im Popup-Fenster öffnet (mit integriertem Smoothbox-Plugin). Und ich kann nicht ein DOM-Element dieser iframe erhalten von JS in sie enthalten nur durch den Aufruf $$(), ich habe eine Flickschusterei wie diese verwenden benötigt:Mootools. DOM-Elemente innerhalb von iframe können nicht abgerufen werden

var context = (window.frames[0]) ? window.frames[0] : window; 
context.$('user_email').set('value', context.$('1_1_30').get('value')); 

Das ist seltsam, und ich denke, das Dies ist ein unerwartetes Verhalten, da JS in standardmäßigen SocialEngine-Modulen nicht in Iframes funktioniert.

Antwort

1

Dies liegt daran, in 1.2.5, $$ ist ein Alias ​​für this.document.getElements.

Ich schlage vor, Sie verwenden, um die IFrame wrapper class von Mootools-Kern, der Iframes erweitern können, so dass sie mootoolsy bekommen, können Sie dann Sachen tun:

var context = this.document, // window 
    iframe = document.getElement("iframe") 

// if iframe found, change context to its contentDocument 
iframe && (context = new IFrame("foo").contentDocument) 

// wrapper. 
!function() { 
    console.log(this.getElements("div")) 
}.call(context) 
+0

Vielen Dank für Antwort, aber ich habe dazu geführt, dass JS-Code befindet sich innerhalb von iframe. Und ich kann nicht verstehen, warum es im Kontext der Eltern statt seiner eigenen läuft. –