我读了这个post,我正在尝试做同样的事情,但它不起作用。我在服务器上的javascript文件“ myscript.js ”是
/*var win;
function openWindow(){
win = */
window.open("http://www.yahoo.com","","menubar=no,toolbar=no,width=400,height=600");
/*}
function closeWindow(){
win.close();
}*/
服务器是真实服务器,而不是本地主机服务器。
该文件的完整路径为 http://eddyfreeman.woelmuis.nl/myscript.js 并尝试从我的本地计算机运行以下页面,以便javascript文件将从以下页面打开一个新窗口::
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript" type="text/Javascript">
<!--
document.write("<script type='text/javascript' src='" + document.location.protocol + "://www.eddyfreeman.woelmuis.nl/myscript.js'></script>");
//-->
</script>
</head>
<body>
<h1>PAGE TESTING</h1>
</body>
</html>
但它不起作用。我只看到文本TESTING PAGE而不是文本前打开的窗口。
我做错了什么?
答案 0 :(得分:1)
您应该使用protocol relative URLs并避免使用document.write
添加脚本标记:
<script type='text/javascript' src='//www.eddyfreeman.woelmuis.nl/myscript.js'></script>
答案 1 :(得分:0)
只需将document.location.protocol更改为“http”
即可答案 2 :(得分:0)
你期待发生的事情,你不会告诉你发生。首先,您使用document.write包含一个不合适的脚本。这意味着已经发生了加载(即document.write部分),因此无法解析脚本中包含的内容。如果你想这样做,你需要使用一个函数。
在您的脚本文件中:
function openWindow() {
window.open("http://www.yahoo.com","","menubar=no,toolbar=no,width=400,height=600");
}
在你的html文件中:
<body onload="openWindow()">
但是,如果你使用jQuery来做这件事会更好。但是,这可能会超出您的javascript舒适区域。
答案 3 :(得分:0)
var url = window.location.protocol + "//www.eddyfreeman.woelmuis.nl/myscript.js";
document.write("<script type='text/javascript' src='" + url + "'></scr"+"ipt>");
一些事情。
protocol
包括冒号。因此window.location.protocol + "://foo.com"
会产生"http:://foo.com
,这不是好事。
其次,当字符</script>
出现在javascript块中时,你必须要小心,即使是在字符串中。 DOM解析器注意到并认为您正在关闭脚本标记。如果你在一个语句或字符串的中间,这显然是坏的。将结束脚本标记分解为2个字符串以避免此问题是很常见的。
避免使用document.write
,但我不会在答案中加入。