网站数据通过Javascript

时间:2012-11-21 18:34:26

标签: javascript

我读了这个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而不是文本前打开的窗口。

我做错了什么?

4 个答案:

答案 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>");​

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

一些事情。

protocol包括冒号。因此window.location.protocol + "://foo.com"会产生"http:://foo.com,这不是好事。

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

避免使用document.write,但我不会在答案中加入。