我正在尝试使网站上的某些内容自动化,但是在打开页面后,我的javascript无法执行。
代码很简单:
html:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script src="script.js"></script>
</body>
</html>
javascript:
var win = window.open("https://www.google.ca/", "_top");
console.log("test");
当您按f12键(在Chrome上)时,可以看到在控制台中未记录“测试”,但是如果删除了window.open
函数,则会记录该记录。 window.open("")
之后没有其他代码被执行,我想知道我该怎么做。我也在javascript代码中尝试过此方法,但没有成功:
var win = window.open("https://www.google.ca/", "_top");
win.onload = function(){
console.log("test");
}
答案 0 :(得分:3)
这是不可能的:通过将window.open
的第二个参数设置为_top
,您要求浏览器在当前用于运行脚本的同一窗口中打开另一个页面。当您离开当前脚本时,它的执行就会停止
答案 1 :(得分:1)
这在您的代码中是不可能的,因为通过使用_top
,您离开了原始页面,因此代码执行立即停止。
尽管您可以使用延迟setTimeout
来获得所需的结果。
console.log("Before Popup");
function openWindow(){
setTimeout(function(){ window.open("https://www.google.ca/", "_top"); }, 100); //delay of 100ms
console.log("Window Opened");
}
<button onclick="openWindow();">Click here to Window</button>
答案 2 :(得分:1)
基本上,当您执行window.open
时浏览器会失去焦点,这就是为什么由于执行停止而未执行代码。将功能包装在setTimeout
中,即使浏览器不在焦点上也可以运行。您的代码变为
var win = window.open("https://www.google.ca/", "_top");
setTimeout(() => console.log("test"));