我们试图从DOM中获取tinyMCE对象以设置文本,但不幸的是,当我们在页面中注入JavaScript代码时,它不工作,而相同的代码在Javascript Console中完美执行(铬)。javascript对象的DOM奇怪问题
的代码如下:
<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
同时:
editor2 = editor.activeEditor; (the last line of the code - will return null)
确定的编辑框已经尝试访问'editor.activeEditor'时加载?它看起来像你试图访问尚未加载的对象 - 你需要对iframe进行一些onload回调。 – nrabinowitz 2012-03-20 17:23:32