2012-11-21 54 views
0

我讀了這個post,並試圖做同樣的事情,但它不工作。我的JavaScript文件「myscript.js」在服務器上是通過JavaScript的網站數據

/*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> 
打開一個新窗口

但它不工作。我只看到文本測試頁,而不是在文本前打開窗口。

我在做什麼錯了?

+1

在[瀏覽器控制檯](https://developers.google.com/chrome-developer-tools/docs/console)中是否顯示任何錯誤? –

+0

我認爲這個SO回答將解決您的問題:http://stackoverflow.com/questions/236073/why-split-the-script-tag-when-writing-it-with-document-write – Kyle

+0

@AlexWayne沒有錯誤出現 –

回答

0

只要改變你的document.location.protocol爲「HTTP」

+0

如果它是https? –

+0

要回答@JoelEtherton的問題,瀏覽器只支持使用'/ /'而不是指定http或https。內容將使用任何當前的連接類型加載。 – Kyle

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舒適區域的範圍。

+0

我在這裏錯過了一些東西。 window.open語句位於服務器的腳本中,而html文件位於本地計算機上。我想在服務器上執行該腳本,因此將onload =「..」添加到body標記中並不是我正在尋找的,因爲您正在討論的功能位於不同的服務器上,而不是與html文件位於同一臺計算機上 –

+0

腳本的位置是無關緊要的。一旦下載了所有參考文件,整個文檔就會在瀏覽器(您的機器)中一起解析。當文檔被下載和解析時,它將執行它被指示執行的任何功能。在這種情況下,因爲您使用document.write來提供引用,所以腳本中的指令不會自動處理,因爲通常會導致它們執行的事件已被調用。 –

1

您應該使用protocol relative URLs,避免使用document.write添加腳本標籤:

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

+1用於避免document.write。將文檔流保持打開狀態並不是一個好主意。 – Kyle

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/

有幾件事情。

包括一個冒號。所以window.location.protocol + "://foo.com"產量"http:://foo.com這是不好的。

第二,當字符</script>出現在javascript塊中時,即使在字符串中,您也要小心。 DOM解析器注意到並認爲您正在關閉腳本標記。如果你處於陳述或字符串的中間,這顯然是不好的。通常會將關閉腳本標記分解爲2個字符串以避免此問題。

並避免使用document.write,但我不會在我的答案中進入。