页面加载功能上的JavaScript无效

时间:2015-05-07 13:55:43

标签: javascript html webpage

我正在尝试编写一个JavaScript代码,该代码将在子页面(使用window.open函数创建)完全加载后执行。

我尝试了window.onloadwindow.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秒。

4 个答案:

答案 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>