我正在尝试编写一个JavaScript代码,该代码将在子页面(使用window.open
函数创建)完全加载后执行。
我尝试了window.onload
和window.setTimeout
这样的功能,但似乎都没有效果。我也尝试使用不同的浏览器,但没有运气。
我有一个HTML文件 myhtml.html ,它调用外部JavaScript文件 Test1.js 。 Test1.js 打开一个网页(www.google.com),然后生成一个弹出窗口。
HTML:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Testin page</title>
<script type="text/javascript" src="Test1.js"></script>
<script type="text/javascript">
function callValidation()
{
var p;
var i=1;
if(document.getElementById("radio1").checked){
p="radio1";
}
directValidation(p);
alert("Ending script");
}
</script>
</head>
<body>
<h1><em><strong>Test Page</strong></em></h1>
<h4><em><strong>Version 1.0</strong></em></h4>
<form name="mainf" id = "mainf">
<input id="radio1" name ="radio1" type="radio" value = "Test Button"/>
<input type = "submit" name="submit" OnClick="callValidation();"/>
</form>
</body>
</html>
Test1.js:
var p;
function directValidation(p)
{
alert(p);
if (p="radio1")
{
fun1();
}
}
function fun1()
{
window.open("http://www.google.com");
window.onload = function(){ alert('Not Working!!'); }
alert("It is working but without waiting for page to load!! The above alert box didn't work");
}
在上面的代码中,alert('Not Working!!');
未执行。
alert("It is working but without waiting for page to load!! The above alert box didn't work");
在加载www.google.com之前正在执行。
在上面的代码中我甚至尝试了这个方法:window.setTimeout('',5000);
但是我也无法用这个延迟5秒。
答案 0 :(得分:1)
window.open
将打开自己的窗口,拥有自己的环境。如果您想在新窗口中显示弹出窗口,则需要在新窗口中加载的页面的源代码中包含该窗口。
在你的行
window.onload = function(){ alert('Not Working!!'); }
window
对象是SOURCE窗口,而不是NEWLY OPENED窗口。源窗口很可能已经过了onload
事件。
如果您只想在新标签页中打开google查询,请尝试:
window.open("http://www.google.com/#q=SEARCH_TERM");
但要注意 - 除非这是作为用户交互的直接结果执行的(例如:点击按钮),否则这通常会被浏览器阻止,因为它被视为“弹出”。
答案 1 :(得分:0)
尝试将onload放在外部功能上。这是事件,当事件发生时它就会被触发,在这种情况下是加载窗口时。在您完成此操作的过程中,当您调用fun1时,您将onload事件绑定到窗口。
答案 2 :(得分:0)
当你这样做时
window.onload = function(){ alert('Not Working!!'); }
在您的代码中,window
指的是您的主页。
由于您希望它与新打开的页面相关,您必须获取新页面的引用,该页面由window.open()
var openedWindow = window.open("http://www.google.com");
openedWindow.onload = showAlert();
function showAlert() {
alert('Not Working!!');
}
答案 3 :(得分:0)
在应该打开的页面中,在body标签中,只需输入一个onload标记:
<body onload="yourfunction()">HTML code</body>