主题: 外部调用KE.plugin['image']的疑问{后续问题} |
作者: 若海, 发布日期: 2009-08-28 08:53:31, 浏览数: 8641 |
//编辑器参数 var KE_CFG = { id : 'content', filterMode: false, minwidth: '610', minHeight: '350', skinType : 'default', skinsPath : 'include/editor/skins/', pluginsPath : 'include/editor/plugins/' } KE.show(KE_CFG); //编辑器接口 function EditUpload(id) { id = id || 'content'; KE.plugin['image'].click(id); KE.g[id].dialog.src += '?zv'; var dialog = KE.g[id].dialog; var dialogDoc = KE.util.getIframeDoc(KE.g[id].dialog); var type = KE.$('type', dialogDoc).value; alert(type); } 上述代码中,KE.g[id].dialog.src += '?zv';可以正常设置iframe的src,说明对象成功调用。但是alert(type);却无法取得值,请帮忙看看是否有何疏漏之处。 |
作者: Roddy, 发布日期: 2009-08-28 09:25:23 |
iframe引用外部html时各个阶段都有顺序的。
你现在是没有下载完HTML,所以取不到值很正常。解决方法是每隔一段时间去检查dialogDoc是否存在。 |
回复 |
作者: 若海, 发布日期: 2009-08-28 10:03:09 |
//编辑器接口 function EditUpload(id, dialog) { var id = id || 'content'; if(!dialog){ KE.plugin['image'].click(id); var loadStat= false; var dialog = KE.g[id].dialog; if(KE.browser == "IE") { dialog.onreadystatechange = function() { if(this.readyState == "complete") { loadStat = true;EditUpload(id,this); } }; } else { dialog.onload = function() { loadStat = true;EditUpload(id,this); }; } if(!loadStat) { dialog.src += '?renew';} } else { var dialogDoc = KE.util.getIframeDoc(dialog); var type2 = KE.$('type', dialogDoc).value; alert(type2); } } 实在是罪过呀,把浏览器的这个基本特性都给忽略啦。这下测试成功了。 但执行效率等需要考究的问题,还要请大家一起商酌。或是有更简单的方法,还请大家指出。 |
回复 |
作者: 若海, 发布日期: 2009-09-11 12:36:01 |
一下为最终代码,解决一些问题,但效率感觉很低,也只能凑活了,盼高手来解决。 //编辑器接口 function EditUpload(id, dialog) { var id = id || 'content'; if(!dialog) { KE.plugin['image'].click(id); var loadStat= false, dialog = KE.g[id].dialog; if(KE.browser == "IE") { dialog.onreadystatechange = function() { if(this.readyState == "complete") { EditUpload(id,this);loadStat=true; this.onreadystatechange=null; } }; } else { dialog.onload = function() { EditUpload(id,this);loadStat=true; this.onload=null; }; } if(!loadStat) { dialog.src += '?renew';} } else { var dialogDoc = KE.util.getIframeDoc(dialog); KE.$('type', dialogDoc).disabled = true; KE.$('app', dialogDoc).value = 'zv'; } } |
回复 |