Javascript 为什么window.open()不能直接在a中工作<;脚本>;标签?
javascript的函数window.open()似乎不能直接在脚本标记中工作,它必须在函数中,并且必须调用该函数。为什么会这样 例如:Javascript 为什么window.open()不能直接在a中工作<;脚本>;标签?,javascript,browser,Javascript,Browser,javascript的函数window.open()似乎不能直接在脚本标记中工作,它必须在函数中,并且必须调用该函数。为什么会这样 例如: //Not working <div> <button> Click here </button> </div> <script> var w = window.open("http://www.stackoverflow.com/"); </script> //Working <
//Not working
<div>
<button> Click here </button>
</div>
<script>
var w = window.open("http://www.stackoverflow.com/");
</script>
//Working
<div>
<button onclick=n()> Click here </button>
</div>
<script>
function n(){
var w = window.open("http://www.stackoverflow.com/");
}
</script>
//不工作
点击这里
var w=窗口打开(“http://www.stackoverflow.com/");
//工作
点击这里
函数n(){
var w=窗口打开(“http://www.stackoverflow.com/");
}
可能是因为DOM还没有准备好。尝试:
document.addEventListener("DOMContentLoaded", function() {
window.open("https://www.stackoverflow.com/");
});
此外,这可能会被浏览器的弹出窗口阻止程序捕获。在此代码中,“w”为空,并且没有打开任何窗口,因为您只能通过人工操作(如单击按钮)打开新窗口
点击这里
var w=窗口打开(“http://www.stackoverflow.com/");
这样做是为了避免站点在未经用户同意的情况下随机打开新窗口。在第一个示例中,您刚刚将open()函数分配给了一个变量;您实际上没有以任何方式调用(触发)该函数 您可以通过将事件侦听器附加到按钮来执行此操作,以便在单击时触发该函数:
const button=document.getElementsByTagName('button')[0];
addEventListener(“单击”,函数(){
窗口打开(“https://www.stackoverflow.com/");
});代码>
点击这里
窗口。打开
将在功能内和功能外工作。但是,如果在没有实际用户操作的情况下调用它,则会出现问题。浏览器的弹出窗口拦截器将阻止它打开新窗口/选项卡
您将在浏览器中看到此警告
您可以通过禁用弹出窗口阻止程序使其工作
您还可以通过添加对窗口的调用使其工作。在实际用户操作中打开,例如:
<script>
window.addEventListener("click", function() {
window.open("https://www.stackoverflow.com/");
});
</script>
addEventListener(“单击”,函数(){
窗口打开(“https://www.stackoverflow.com/");
});
当您单击窗口时,它将工作 因为很多人滥用它来播放无关的广告。。。充其量。你在使用Chrome吗?你有你的弹出窗口拦截器吗?如果您关闭弹出窗口拦截器,它将按预期工作()。参考:window.open(…)
没有调用任何东西吗?半正确。代码仍然是错误的,因为您需要通过用户手势的事件进行调用。在按钮被画出来之前,你现在就这样做了。但是不管函数有没有,代码都是一样的,所以在函数内部执行和直接执行有什么区别吗?@kaido这就是我要说的!我同意你的看法!没有手势就无法打开新窗口。这就是为什么使用onclick的第二个代码可以工作的原因!是的,但是您的代码没有显示它。您需要从click事件处理程序调用它。这里你是putside,什么都没听。是的,我想我现在明白了,所以编译器忽略了它,因为它不是由事件触发的,是吗?@pinturic他右边的兄弟,它在工作,只是弹出阻止程序
<script>
window.addEventListener("click", function() {
window.open("https://www.stackoverflow.com/");
});
</script>