0

我正在尝试使用window.close下面的链接

myWin.document.write("<a href='#' onclick=\"newMovie.window.close('http://www.imdb.com/title/tt2015381/','newMovie','height=600,width=600,left=400,top=100,scrollbars,status,resizable,dependent;')\"><b>Click Here to Close the Movie Window</b></a> <br><br>");

它不工作。这个想法是能够单击并打开一个有效的链接,然后单击第二个链接以关闭不工作的同一个窗口。

以下是两个链接:

myWin.document.write("<div Id='box' style='text-align:center;");
myWin.document.write("<a href='#' onclick=\"window.open('http://www.imdb.com/title/tt2015381/','newMovie','height=600,width=600,left=400,top=100,scrollbars,status,resizable,dependent;')\"><b>Click Here to Access the Movie Window</b></a> <br><br>");
myWin.document.write("<a href='#' onclick=\"newMovie.window.close('http://www.imdb.com/title/tt2015381/','newMovie','height=600,width=600,left=400,top=100,scrollbars,status,resizable,dependent;')\"><b>Click Here to Close the Movie Window</b></a> <br><br>");

我在这里遗漏了什么?还是更容易创建一个函数()来关闭链接?

4

1 回答 1

0

你错过了几点:

  1. 正如评论中提到的bergi,命名窗口不会创建变量。使用var newMovie = window.open(…)andnewMovie.close()代替。变量newMovie是对您创建的窗口的引用。还要注意一点,newMovie应该是全局变量。参考:window.open - MDN

  2. 使用document.write时要小心。您编写的文本将被解析为文档的结构模型。在这种情况下,您在代码中遗漏了一个紧密的语法:

    你的:myWin.document.write("<div Id='box' style='text-align:center;");

    正确的:myWin.document.write("<div Id='box' style='text-align:center;'>");

您可能不会直接运行代码,而是将其全部复制并在本地.html文件中运行。

<!DOCTYPE html>
<html>
<head>
	<title>Test Page</title>
</head>
<body>
<script type="text/javascript">

	var newMovie = null; 

	document.write("<div id='box' style='text-align:center;'>");
	document.write("<a href='#' onclick='openNewWindow()'><b>Click Here to Access the Movie Window</b></a>");
	document.write("<a href='#' onclick='closeWindow()'><b>Click Here to Close the Movie Window</b></a>");

	function openNewWindow() {
		newMovie = window.open('http://www.imdb.com/title/tt2015381/','newMovie','height=600,width=600,left=400,top=100,scrollbars,status,resizable,dependent;');
	}

	function closeWindow() {
		newMovie.close();
	}
</script>
</body>
</html>

于 2015-12-07T06:33:27.190 回答