似乎javascript的function window.open()不能直接在脚本标记中工作,它必须在函数内部,并且必须调用该函数,为什么它和thanx?
示例:
//不起作用
<脚本>
var w = window.open(“ http://www.stackoverflow.com/”);
//工作
<脚本>
函数n(){
var w = window.open(“ http://www.stackoverflow.com/”);
}
答案 0 :(得分:1)
window.open
可以正常使用和无效。但是在没有实际用户操作的情况下调用它时会出现问题。浏览器的弹出窗口阻止程序将阻止您打开新窗口/标签。
您将在浏览器中看到此警告。
您可以通过禁用弹出窗口阻止程序使其工作。
您还可以通过在实际用户操作中将呼叫添加到window.open
来使其正常工作,例如:
<script>
window.addEventListener("click", function() {
window.open("https://www.stackoverflow.com/");
});
</script>
单击窗口后它将起作用。
答案 1 :(得分:0)
可能是因为DOM尚未准备好。试试:
Parameters
此外,这可能会被浏览器的弹出窗口阻止程序捕获。
答案 2 :(得分:0)
在此代码中,“ w”为null且没有打开任何窗口,因为您只能由于人为操作(例如单击按钮)才能打开新窗口。
<div>
<button> Click here </button>
</div>
<script>
var w = window.open("http://www.stackoverflow.com/");
</script>
这样做是为了避免网站在未经用户同意的情况下打开随机的新窗口。
答案 3 :(得分:0)
在第一个示例中,您刚刚将open()函数分配给了一个变量;您实际上并没有以任何方式调用(触发)该函数。
您可以通过将事件侦听器附加到按钮上来执行此操作,以便在单击时触发该函数:
const button = document.getElementsByTagName('button')[0];
button.addEventListener("click", function() {
window.open("https://www.stackoverflow.com/");
});
<div>
<button>Click here</button>
</div>
或在加载时自动触发功能:
window.onload = function() {
window.open("https://www.stackoverflow.com/");
};
注意:由于安全策略的缘故,我的示例都不会在这里打开新窗口。
它们将在应用程序中运行。