Sitecore页面编辑器在div添加到DOM之前运行脚本

时间:2015-02-17 15:33:12

标签: javascript sitecore sitecore7 sitecore7.2

昨天我问过this SO question我在尝试通过页面编辑器添加渲染时没有显示渲染的问题,即使它在内容编辑器上通过演示详细信息添加时效果很好。渲染中包含一个JavaScript函数,它似乎是罪魁祸首,特别是因为如果它被删除,渲染将完全正常。

@MarekMusielak给了我一个很好的答案,但有以下几点说:

  

问题是,当您通过页面编辑器添加组件时,会在将div元素添加到DOM之前触发该脚本。不要问我为什么......

我一直想弄清楚为什么会发生这种情况,但我似乎无法在网上找到任何关于此事的信息,而且我的同事都不知道为什么会这样。它真的开始让我烦恼。

为什么页面编辑器会在<{strong>} 之前将脚本激活到DOM?

1 个答案:

答案 0 :(得分:2)

在现代浏览器中,我绝不认为自己是DOM的专家,但我确实发现了这一点 - 它可能值得一试。

Colin Ihrig writes

  

如前所述,标记会导致浏览器在处理脚本时阻止页面的其余部分。如果脚本引用尚未完成加载的DOM元素,则会导致问题。在这种情况下,DOM相关代码通常放在事件处理程序中,例如窗口加载或DOMContentLoaded。另一个选择是推迟执行,直到使用“defer”属性解析文档。

他的整篇文章非常详尽。我会尝试用#34;延迟&#34;和&#34; async&#34;并查看它是否对您正在经历的事情产生任何影响。