使用Javascript验证/将文本插入新窗口

时间:2017-03-20 00:53:08

标签: javascript html google-chrome

我到处搜索了许多不同的方法,在一个函数中使用javascript将文本插入到一个新打开的窗口中,但似乎没有一个工作让我相信我错过了一个关键的基本要素。

function validate2() {
  var valTxt = document.webPage.txt2.value;
  if (valTxt == null || valTxt == "") {
    alert("Field cannot be empty!");
    return false;
  }
  if (valTxt.length < 5) {
    alert("You must enter at least 5 characters!")
    return false;
  }
  myWin = window.open('mypopup.html', "mywin", '');
  myWin.getElementById('userText').innerHTML = valTxt;
}
<!doctype html>

<html lang="en">

<head>
  <meta charset="utf-8">

  <title>Exercise 3</title>
  <script type="text/javascript" src="functions.js"></script>
</head>

<body>

  <form name="webPage" action="http://thebest404pageever.com/">
    Please type anything over 5 characters: <input type="text" name="txt2"><br/>

    <input type="submit" name="b2" value="Confirm" onClick="return validate2()">
  </form>

</body>

</html>

我有一个mypopup的空HTML文件,只有一个id为userText的h1元素。弹出窗口肯定会出现,但不断显示空白。这里有什么我想念的吗?非常感谢。

myWin = window.open('mypopup.html', "mywin", '');
		
		window.onload=function placeText(){
		myWin.getElementById('userText').innerHTML = valTxt;

我用它附加了它,它看起来不正确,当然也不起作用。

1 个答案:

答案 0 :(得分:0)

新窗口的加载是异步完成的。如MDN documentation

中所示
  

请注意,远程网址不会立即加载。当window.open()返回时,窗口始终包含about:blank。 URL的实际提取是延迟的,并在当前脚本块完成执行后启动。窗口创建和引用资源的加载是异步完成的。

在加载DOM之前,您需要将更改推迟到DOM。

我会为此使用window.onload处理程序:

window.onload=function() {
  myWin.getElementById('userText').innerHTML = valTxt;
};