我到处搜索了许多不同的方法,在一个函数中使用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;
我用它附加了它,它看起来不正确,当然也不起作用。
答案 0 :(得分:0)
新窗口的加载是异步完成的。如MDN documentation:
中所示请注意,远程网址不会立即加载。当window.open()返回时,窗口始终包含about:blank。 URL的实际提取是延迟的,并在当前脚本块完成执行后启动。窗口创建和引用资源的加载是异步完成的。
在加载DOM之前,您需要将更改推迟到DOM。
我会为此使用window.onload处理程序:
window.onload=function() {
myWin.getElementById('userText').innerHTML = valTxt;
};