如何确保首先创建YUI对象

时间:2011-02-22 11:04:34

标签: javascript yui3

我喜欢YUI沙盒,但我遇到了问题。考虑一个带有iframe的文档(例如我包含的ckedior)和一个初始化脚本。它总是在外部文档的部分之前执行(不知道为什么)。

我需要调用一个函数,该函数在父文档的YUI沙箱中初始化。但它永远不会被初始化,因为执行从iframe开始。

var getWordCount;

AUI().ready('aui-node', 'console', function(A) {

    getWordCount = function (htmlData) {
        var target = A.one('div.my-png-image');
        target.one('div:fist-child').set('text', strip(htmlData).trim().split(/\s+/).length);
    };
});

如果没有yui sandbox,我只是在父文档中声明了一个函数,即使在iframe中执行起来很难,全局函数也会存在,并且可以从iframe中调用。

2 个答案:

答案 0 :(得分:1)

问题可能是AUI.ready,因为它只在加载整个HTML时执行。这意味着iFrame会在浏览器触发.ready-event之前加载。

您可以尝试通过更改用于触发代码的AUI事件来测试此操作,并在iFrame-load之前将要运行的代码放在AUI.ready之外。

如果在运行之前需要加载dOM中的某个元素,可以尝试检查元素是否已加载,然后运行脚本,如in this example

答案 1 :(得分:0)

你是否可以在AUI()中创建IFrame?ready?