Странная проблема DOM с объектом javascript - PullRequest
1 голос
/ 20 марта 2012

Мы пытаемся получить объект tinyMCE из DOM, чтобы установить текст, но, к сожалению, когда мы внедряем код javascript на страницу, он не работает, в то время как тот же код отлично работает в консоли Javascript (Chrome).

Код следующий:

<script language="javascript">
 var testing = 'test';
 var curFrames;
 var curUrl;
 var mFrames;
 var cFrame;
 var editor;
 var editor2;

 window.onload=CodeOnLoad ;

//Javascript that runs on load
function CodeOnLoad() {
  curFrames=document.getElementsByTagName("frame");  


curFrames[0].onload = function() {
  curUrl= curFrames[0].contentDocument.getElementById("the_iframe").src;
  console.log(curUrl)

  if (curUrl.indexOf("post")!=-1)
  {
     mFrames=document.getElementsByTagName("frame");
     cFrame = mFrames[0].contentDocument.getElementById('the_iframe');
     editor = cFrame.contentWindow.tinymce;
     editor2 = editor.activeEditor;
  }
 }
}
</script>

Приведенный выше код позволит нам использовать:

editor.activeEditor (which will return the correct editor object) // Only when we test it in the Browser Javascript console

while:

editor2 = editor.activeEditor; (the last line of the code - will return null) 

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Для вашего сценария использования есть настройка конфигурации tinymce setup плюс обработчик onInit.

Дополнительно:

editor = cFrame.contentWindow.tinymce;
editor2 = editor.activeEditor;

не будет работать таким образом.

Я покажу вам, как правильно установить:

setup : function(ed) {

    ed.onInit.add(function(ed, event) {
          // do all you want to do after the editor has loaded here
          var my_window = ed.getWin();
          var my_document = ed.getDoc();

    });
});
0 голосов
/ 20 марта 2012

Следует помнить о двух вещах:

  1. Когда родительское окно завершает загрузку, нет абсолютно никаких гарантий того, что содержимое внутреннего элемента iframe завершило загрузку.

  2. Вы не можете получить доступ к свойствам iframe (таким как contentWindow или contentDocument), если источник iframe загружен из другого домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...