Как обеспечить создание объекта YUI первым
Мне нравится песочница 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 я только что объявил функцию в родительском документе, и даже если выполнение начнется в iframe, глобальная функция существовала бы и могла быть вызвана из iframe.
2 ответа
Возможно, проблема в AUI.ready, так как он выполняется только при загрузке всего HTML-кода. Это означает, что iFrame загрузится до того, как браузер вызовет событие.ready.
Вы можете попытаться проверить это, изменив событие AUI, которое вы используете для запуска своего кода, и поместите код, который вы хотите запустить, перед загрузкой iFrame за пределы AUI.ready.
Если вам нужен определенный элемент в dOM, который будет загружен перед запуском, вы можете попробовать проверить, загружен ли элемент, и затем запустить ваш скрипт, как в этом примере.