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



我已经到处搜索了许多不同的方法,可以在函数中使用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>

我有一个空的 html 文件用于 mypopup,只有一个 id 为 userText 的 h1 元素。弹出窗口肯定会显示,但会持续显示空白。我在这里缺少什么吗?多谢。

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

我用这个附加了它,它看起来不对,果然,也不起作用。

新窗口的加载是异步完成的。如 MDN 文档中所示:

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

您需要将对 DOM 的更改推迟到加载之后。

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

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

最新更新