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