0

我读了这篇文章,并试图做同样的事情,但它不起作用。我在服务器上的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 而不是文本前打开的窗口。

我究竟做错了什么?

4

4 回答 4

1

您应该使用协议相对 URL并避免使用document.write添加脚本标记:

<script type='text/javascript' src='//www.eddyfreeman.woelmuis.nl/myscript.js'></script>
于 2012-11-21T18:41:28.933 回答
0

只需将您的 document.location.protocol 更改为“http”

于 2012-11-21T18:39:17.337 回答
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 舒适区。

于 2012-11-21T18:41:23.153 回答
0
var url = window.location.protocol + "//www.eddyfreeman.woelmuis.nl/myscript.js";
document.write("<script type='text/javascript' src='" + url + "'></scr"+"ipt>");​

http://jsfiddle.net/6STLc/1/

一些东西。

protocol包括一个冒号。所以window.location.protocol + "://foo.com"产量"http:://foo.com不好。

</script>其次,当字符出现在 javascript 块中时,您必须小心,即使在字符串中也是如此。DOM 解析器注意到并认为您正在关闭脚本标记。如果你在一个语句或字符串的中间,这显然很糟糕。通常将结束脚本标记分解为 2 个字符串以避免此问题。

并避免使用document.write,但我不会在我的回答中讨论这个问题。

于 2012-11-21T18:48:51.303 回答