2014-12-03 51 views
-1

我有一些html,在腳本標記中有一堆JS代碼。所以我把它移到了一個單獨的.js文件中。包含一個JavaScript文件,因爲它是用腳本標記寫的

JS代碼還從CGI加載了一些變量,使用的形式爲<%ejGet(var)%>。但是,在將代碼與HTML文件分離後,字符串不會被來自服務器的數據替換。

有沒有一種方法來包含JS文件,好像它是寫在腳本標記內,還是有另一種方法來做到這一點?

<script language="javascript"> 
<!-- hide 
var syncNvram = '<%ejGetWl(wlSyncNvram)%>'; 
...about 1000 lines more... 
</script> 

因此,將此代碼移動到單獨的文件後,變量不會加載。

+0

你能發表一些代碼嗎? – 2014-12-03 09:54:23

+0

我編輯了我的問題...但是有很多代碼,我認爲它不會真的有很大幫助 – Alko 2014-12-03 09:59:06

+0

嘗試'<%= ejGetWl(wlSyncNvram)%>' – 2014-12-03 10:01:06

回答

-1

爲此,您需要從CGI程序生成腳本。

<script src="/cgi-bin/example.js.cgi"></script> 

當然,這將是因此讓在正確的狀態變量可能是有問題的一個不同 CGI程序。

通常情況下,您可以使用不同的方法解決問題:將文檔中的數據包含在腳本元素中或元素中,例如<meta>元素,隱藏輸入或data-*屬性,靜態腳本從DOM中讀取數據。

1

的問題是,你的<% ejGetWl(wlSyncNvram) %>被該服務器由一些模板或處理引擎它被髮送給瀏覽器,因此瀏覽器實際上是看到之前執行輸出,例如

var syncNvram ='abcdefg'; //或任何輸出是

你真的問的問題是,我的服務器端模板/處理引擎可以處理JavaScript文件而不是HTML文件。

答案是,它取決於模板/處理引擎,但總的來說,這是一個壞主意。 JS文件應保持靜態資產爲很多很好的理由(斷碼,通過CDN的分發等)

更好的事情是他們分離出:

<script>var syncNvram = '<%ejGetWl(wlSyncNvram)%>';</script> 
<script src="myfile.js"></script> 

單獨申報。

更好的可能是使用ajax來獲得它,但這是一個完全不同的架構,可能不適合這裏。

相關問題