2

我有一个基于 SocialEngine 4 的网站,它使用 moo-tools-1.2.5。有一个带有一些 js 的 iframe 在弹出窗口中打开(带有内置的 Smoothbox 插件)。而且我不能通过调用 $$() 从 JS 中获取这个 iframe 的 DOM 元素,我需要使用这样的 kludge:

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

这很奇怪,我猜这是出乎意料的行为,因为标准 SocialEngine 模块中的 JS 也不能在 iframe 中工作。

4

1 回答 1

1

这是因为在 1.2.5 中,$$this.document.getElements.

我建议您使用 mootools-core 中的IFrame 包装类,它可以扩展 iframe,以便它们变得 mootoolsy,然后您可以执行以下操作:

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)
于 2012-04-13T09:08:07.913 回答