浏览器安全限制
在浏览器中,有些JavaScript代码只有在用户触发下才能执行,例如, window.open() 函数:
// 无法弹出新窗口,将被浏览器屏蔽:
$(function () {
window.open('/');
});
这些“敏感代码”只能由用户操作来触发:
var button1 = $('#testPopupButton1');
var button2 = $('#testPopupButton2');
function popupTestWindow() {
window.open('/');
}
button1.click(function () {
popupTestWindow();
});
button2.click(function () {
// 不立刻执行popupTestWindow(),100毫秒后执行:
setTimeout(popupTestWindow, 100);
});
当用户点击 button1 时, click 事件被触发,由于 popupTestWindow() 在 click 事件处理函数内执行,这是浏览器允许的,而 button2 的 click 事件并未立刻执行 popupTestWindow() ,延迟执行的 popupTestWindow() 将被浏览器拦截。