插入,延迟,原型和附加元素

这可能是一个更通用的浏览器/比原型具体quesiton JavaScript的问题,但我认为这将更好地在这里问,因为大家往往真正了解JavaScript和浏览器一吨的细节。 所以在这里不用。

如果我执行以下代码:

HTML:

JavaScript的:

$('area').insert({bottom: "<div id="inserted"></div>"}); var count = 0; var f = function() { if ($('inserted') == null) { console.log("not there"); count++; if (count > 50) { $('area'.insert({bottom: "<div id="inserted"></div>"}); count = 0; } f.defer(); } else { console.log("there"); } }; f();

结果:

大多数只是显示的时间:

there

但在某些时候它这样做

not there not there not there there

我假设,因为插入的东西,排队和浏览器然后插入节点到在其下一次事件循环的DOM。 我知道,WebKit是一个单线程所以这是有道理的,有时它不存在,然后它会在那里,所以我真的想我必须要等到它的存在之前,我可以做“接下来的事情”是插入的节点上。 那么Firefox和IE浏览器? 难道他们以同样的方式全部单线程? 在Chrome中,会发生什么?

有时候,我看到下面的发生也这是真的就对我说:

not there not there ... 50 times not there there

它发生,每隔一段时间WebKit的(Mac OS)并在iPhone上的WebKit,我可以很容易地重现。 我已经建立了一些简单的,将做到这一点,但所有这一切似乎有点疯狂的我,因为当我看别人的代码,他们甚至不考虑到这一点。 他们从来没有办法DOM元素插入HTML文本到DOM元素时出现。

任何答案/建议将是超级有帮助的。

基兰

--------------解决方案-------------

所有这一切都DOM后运行:加载所以问题不是DOM是不加载,但有时会被加载,即使它的内容并不总是出现。 经过寻找到这一点,我发现,这似乎发生在iPhone上的Safari浏览器,但不能在桌面版本。 它可能只是一个时间问题。 感谢您抽出宝贵的时间来回答这些问题。

我猜法比安的问题得到它的权利:只要等到DOM加载document.observe("dom:loaded", f);

分类:JavaScript的 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.621 (s). 10 q(s)