У меня возникла ошибка Javascript, которая выходит за рамки моего знания языка.
Я создаю собственный плагин для CKEditor. Плагин представляет собой IFrame, который открывается в DIV, созданном CKEditor.
Внутри IFrame я показываю несколько изображений. Если пользователь выбирает одно из этих изображений, HTML-код, необходимый для отображения этого изображения, вставляется в CKEditor.
Я застрял в динамическом выполнении этого. Я подключаюсь к экземпляру CKEditor из iframe следующим образом:
var CKEDITOR = window.parent.CKEDITOR;
CKEditor предлагает "прослушивателя OK", который срабатывает при нажатии кнопки OK (отображаемой CKEDitor). Этот слушатель ОК находится за пределами IFrame.
Определение прослушивателя OK, работающего со статическими значениями, работает:
var okListener = function(ev) {
this._.editor.insertHtml('<img class="symbol" src="my_static_symbol.gif">');
CKEDITOR.dialog.getCurrent().removeListener("ok", okListener);
};
// Assign OK listener
CKEDITOR.dialog.getCurrent().on("ok", okListener);
Но я еще не знаю возвращаемое значение, когда назначаю прослушиватель OK, поэтому мне нужно сделать что-то вроде этого:
var okListener = function(ev) {
this._.editor.insertHtml('<img class="symbol" src="'+my_dynamic_value()+'">');
CKEDITOR.dialog.getCurrent().removeListener("ok", okListener);
};
// Assign OK listener
CKEDITOR.dialog.getCurrent().on("ok", okListener);
Но это не работает, потому что my_dynamic_value
находится за пределами области действия функции в то время, когда она запускается кнопкой «OK» CKEditor.
Конечно, я мог бы каждый раз, когда пользователь выбирает другое изображение в списке, обновлять функцию okListener
и жестко закодировать текущее значение, используя eval
. Но мне кажется, что это ужасная трата ресурсов.
Есть ли какой-нибудь трюк с областью видимости, который я могу использовать, чтобы получить доступ к материалам из моего Iframe изнутри okListener ()?
Надеюсь, это достаточно ясно. Если это не так, прокомментируйте, и я уточню.
okListener
определен в iframe или в родительском элементе? Создается / посещается iframe только один раз или когда пользователю нужно выбрать изображение? - person outis   schedule 21.12.2009okListener
, какое изображение пользователь щелкнул последним. - person Pekka   schedule 21.12.2009