我有一个网站:
我有一个javascript函数,然后使用setContent
textarea 的javascript方法将数据从我的数据库插入到文本编辑器中.它似乎在Firefox和IE中很好,但在Chrome中有时没有任何显示.没有错误,只是一个空白的编辑器.
在身体部分,我有:
在头部我有:
function ajaxLoad() { var ed = tinyMCE.get('elm1'); ed.setProgressState(1); // Show progress window.setTimeout(function() { ed.setProgressState(0); // Hide progress ed.setContent('
General Manager's CornerAugust 2009
It’s been 15th and so have a Steak Night (Saturday, 15th) and a shore Dinner planned (Saturday, 22nd) this month. urday, September 5th. e a can’t missed evening, shas extended it one additional week. The last clinic will be the week of August 11th.
Alt (Tuesday through Thursday)
I wouClub.
'); }, 1); }
我不确定Chrome是否拒绝了它的某些格式,但似乎TinyMCE可以在一个浏览器中解析它,它应该可以在任何浏览器中执行,所以我很困惑.
有什么建议?
背景:
由于各种原因onload()
不被认为是加载Javascript的正确方法,例如参见在文档就绪上启动代码,其中最重要/最明显的是在页面完全下载之前Javascript代码不会运行,包括图像等因此,这可能需要一段时间(例如,如果外部横幅广告服务器关闭等).
相反,建议在DOM准备就绪后立即加载Javascript ,但不幸的是,没有与浏览器兼容的本机解决方案,请参阅页面DOM加载时(但在window.onload之前)获得通知 ; 请注意,我的整个答案都是基于最优秀的Javascript库jQuery,它提供了针对此问题的跨浏览器解决方案,因此我绝对赞成对自己接受的解决方案的两个更高的投票答案.
可能的原因:
你的问题似乎是由相反的行为引起的:Chrome有助于WebKit渲染引擎,就像Safari一样,后者onload()
的讨论行为也不同,请参阅何时onload fire?在Safari中更快吗?.有关Chrome特定问题的另一个说明可以在window.onload中找不到在Chrome中无法正常工作,但没有解释.
总而言之,我怀疑onload()
在DOM实际完全加载之前要开火,至少关于TinyMCE的要求,这对于像这样的问题是非常脆弱的,并且只是停止加载.
可能的方法:
只是在window.onload中概述的促进标签defer
上的属性不能在Chrome中正常工作也不是跨浏览器兼容的,因此我只是采用广泛部署和验证的方法来使用已经提到的jQuery跨浏览器解决方案来解决问题,无论如何这是一种好的做法,原则上也应该照顾你的反问题.script
onload()
更新:
确实存在一些针对WebKit的错误,这些错误可以支持我的结论(无论这种行为是否构成错误或是故意的),请参阅:
onload有时会在加载所有资源之前触发
window.onload在加载所有子资源之前触发
Window.onload在加载图像资源之前触发