我有一个网站:
<body onload="ajaxLoad()" >
我有一个 Javascript 函数,然后使用文本区域的 setContent
Javascript 方法将数据从我的数据库插入文本编辑器。在 Firefox 和 IE 中似乎很好,但在 Chrome 中有时什么也没有显示。没有错误,只是一个空白的编辑器。
在正文部分我有:
<textarea id="elm1" name="elm1" rows="40" cols="60" style="width: 100%">
</textarea>
在头部我有:
function ajaxLoad() {
var ed = tinyMCE.get('elm1');
ed.setProgressState(1); // Show progress
window.setTimeout(function() {
ed.setProgressState(0); // Hide progress
ed.setContent('<p style="text-align: center;"><strong><br /><span style="font-size: small;">General Manager's Corner</span></strong></p><p style="text-align: center;">August 2009</p><p>It’s been 15<sup>th</sup> and so have a Steak Night (Saturday, 15<sup>th</sup>) and a shore Dinner planned (Saturday, 22<sup>nd</sup>) this month. urday, September 5<sup>th</sup>. e a can’t missed evening, shas extended it one additional week. The last clinic will be the week of August 11<sup>th</sup>. </p><p> Alt (Tuesday through Thursday) </p><p> I wouClub.</p><p> </p><p> </p><p> </p><p> <strong></strong></p>');
}, 1);
}
我不确定它是否是 Chrome 拒绝的某些格式,但似乎如果 TinyMCE 可以在一个浏览器中解析它,它应该能够在任何浏览器中进行解析,所以我很困惑。
有什么建议吗?
最佳答案
背景:
由于各种原因,onload()
不被认为是加载 Javascript 的正确方法,参见示例 Launching Code on Document Ready ,最重要/最引人注目的是 Javascript 代码在页面完全下载完成之前不会运行,包括图像等,因此这可能需要很长时间(例如,如果外部横幅广告服务器关闭等)。
相反,建议在 DOM 时尽快加载 Javascript已准备就绪,但不幸的是,没有跨浏览器兼容的 native 解决方案,请参阅 Getting notified when the page DOM has loaded (but before window.onload) ;请注意,我的整个答案都是基于最优秀的 Javascript 库 jQuery ,它提供了一个 cross browser solution for this problem ,因此我肯定会赞成两个投票较高的答案,而不是我自己接受的解决方案。
可能的原因:
您的问题似乎是由相反的行为引起的:Chrome促进 WebKit渲染引擎,就像Safari ,并且对于后者 onload()
的行为有所不同,请参阅 Is Safari faster? 中的 When does onload fire? 部分.可以在 window.onload not working correctly in Chrome 中找到此问题的另一个特定于 Chrome 的描述。 ,虽然没有解释。
总而言之,我怀疑 onload()
在 DOM 实际完全加载之前触发,至少考虑到 TinyMCE 的要求,TinyMCE 在此类问题上是出了名的脆弱,并且只是停止加载。
可能的解决方案:
只是便利属性defer
在 script
上标记如 window.onload not working correctly in Chrome 中所述再次不跨浏览器兼容,因此我将简单地使用已经提到的 jQuery cross browser solution for the onload()
problem 的广泛部署和验证的方法。 ,这无论如何都是很好的做法,原则上也应该处理你的逆问题。
更新:
确实存在一些针对 WebKit 的错误这可以支持我的结论(无论这种行为实际上是错误还是故意的),请参阅:
关于javascript - 当我动态设置内容时,TinyMCE 无法与 Chrome 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318291/