通过Javascript的网站数据

通过Javascript的网站数据,javascript,Javascript,我读了这篇文章,并试图做同样的事情,但它不起作用。服务器上我的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(); }*/ 服务器是真正的服务器,而不是

我读了这篇文章,并试图做同样的事情,但它不起作用。服务器上我的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();
}*/
服务器是真正的服务器,而不是本地主机服务器

文件的完整路径为 我正在尝试从本地计算机运行以下页面,以便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>

无标题文件
页面测试
但它不起作用。我只看到文本测试页面,而不是文本前打开的窗口


我做错了什么?

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

您期望发生一些您不知道会发生的事情。首先,您使用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的舒适范围。

您应该使用并避免使用
文档。编写
以添加脚本标记:

<script type='text/javascript' src='//www.eddyfreeman.woelmuis.nl/myscript.js'></script>

var url=window.location.protocol+“//www.eddyfreeman.woelmuis.nl/myscript.js”;
文件。填写(“”);​

有几件事

协议
包含冒号。所以
window.location.protocol+“://foo.com”
会产生
“http:://foo.com
,这并不好

第二,当字符“代码> <代码>出现在一个JavaScript块中时,即使在字符串中,也必须小心。DOM解析器注意到并认为您正在关闭脚本标记。如果处于语句或字符串的中间,这显然是不好的。将关闭脚本标记分解为2个字符串是常见的,以避免此问题。


避免使用
文档。写
,但我不会在我的回答中详细说明这一点。

您的文档中是否出现任何错误?我认为这样的回答可以解决您的问题:为了回答@JoelEtherton的问题,浏览器支持只使用
/
而不是指定http或https。内容将使用任何当前连接加载type您有。+1用于避免document.write。让文档流像这样打开不是一个好主意。我想您在这里缺少了一些东西。window.open语句在服务器上的脚本中,html文件在我的本地计算机上。我想在服务器上执行该脚本,因此添加onload=“。。“对于body标记,我并不是在寻找,因为您所谈论的函数位于不同的服务器上,而不是与html文件位于同一台机器上。脚本的位置与此无关。下载所有引用的文件后,整个文档将在浏览器(您的计算机)中一起解析。在下载和解析文档时,它将执行指示它执行的任何功能。在这种特殊情况下,由于使用document.write提供引用,脚本中的指令将不会自动处理,因为通常会导致它们执行的事件已被调用。
var url = window.location.protocol + "//www.eddyfreeman.woelmuis.nl/myscript.js";
document.write("<script type='text/javascript' src='" + url + "'></scr"+"ipt>");​