我使用window.open()创建了一个空白窗口 我添加了一个字符串"等一下......" 3次,延迟1秒 在添加字符串之前,我记录了窗口的正文。
窗口显示了我预期的字符串,但控制台日志不是。
登录
tmp.html:20 <body><h1>Wait a minute...</h1><h1>Wait a minute...</h1><h1>Wait a minute...</h1></body>
tmp.html:20 <body><h1>Wait a minute...</h1><h1>Wait a minute...</h1><h1>Wait a minute...</h1></body>
tmp.html:20 <body><h1>Wait a minute...</h1><h1>Wait a minute...</h1><h1>Wait a minute...</h1></body>
现在我想知道为什么结果会这样发生。
使用setTimeout()时,浏览器会忽略延迟并执行计时器功能,但更新视觉内容的代码除外。是不是?
码
<button onclick="func1()">Result</button>
<script>
function func1() {
var newWindow = window.open('about:Blank', 'newWindow',
'width=480, height=272, resizable=1', true);
if (newWindow) {
var i = 3;
var func = function () {
var node = document.createElement('h1');
node.appendChild(document.createTextNode("Wait a minute..."));
console.log(newWindow.document.getElementsByTagName('body')[0]);
newWindow.document.getElementsByTagName('body')[0].appendChild(node);
if (--i > 0) {
setTimeout(func, 1000);
}
};
setTimeout(func, 1000);
} else {
window.alert('Popup Blocked');
}
}
</script>
&#13;