添加alert()使"not working script"正常工作

Rad*_*kel 4 javascript alert

我有一个重写几年前写的代码来使用现代浏览器.该网站包含几个Javascript文件.

在它们上面有一个像这样的代码 - 它动态生成DOM元素:

createTabs();
createTabsContent();
Run Code Online (Sandbox Code Playgroud)

现在,我在Chrome中打开网站,在页面加载后,我尝试更改一些新生成的元素样式

document.getElementById('element').style.display = 'none';
Run Code Online (Sandbox Code Playgroud)

并且它不起作用 - 表单脚本或Chrome控制台.是的,DOM中存在id为#element的元素.什么是奇怪的 - Chrome不会报告任何错误.

但是,当我修改代码并执行类似的操作时:

alert('test'); //i put alert here 
createTabs();
createTabsContent();
//alert('test'); // or put it here
Run Code Online (Sandbox Code Playgroud)

一切正常.

在其他浏览器中:IE8,FF,Opera一切正常,也没有错误.我使用jQuery document.ready,然后尝试使用window.onload事件 - 但它们失败了 - 没有任何改变.

什么可能导致这种行为?

jhu*_*man 5

这种与DOM相关的东西不起作用的症状,但在添加警报时开始工作通常可以通过推迟第二步来解决:

this.foo();
var me = this;
setTimeout(function() { me.bar(); }, 0); // Whatever library you're using may provide a cleaner way of deferring execution.
Run Code Online (Sandbox Code Playgroud)

IE特别容易出现无法立即与之交互的事情.我还没有真正遇到过Chrome.