2012-03-02 119 views
0

我有問題!我不知道這是可能的,但是......javascript - 查看評論

我有一個頁面一個JavaScript包含文件上。在文件的頂部是一個評論,看起來沿此線的東西:

/* 
    Local site config.js 
    Last updated: 2012.01.04 
*/ 

我想做些什麼可以做的是另一種JavaScript文件中(該文件被第一個文件後裝),以某種方式得到那個日期。所以我的問題是,評論以某種方式存儲在DOM中,或者有一些其他方式來訪問此文件的內容,我可以使用正則表達式來抓取它等。

基本上我有依賴於本地文件提供一些配置選項的全局文件,並有一噸擁有自己的本地配置文件的網站。我希望能夠從全局文件中的本地.js文件中獲取該日期。本地和全局.js文件都託管在同一個域中,但包含.js文件的站點可能與.js文件位於同一個域中,也可能不在.js文件所在的域中。

我知道正確答案是更新所有本地.js文件以將該日期放入.js變量中,作爲長期解決方案,我當然打算這麼做。但作爲一個短期解決方案,我現在唯一可以改變的就是全局.js文件。如果它不能完成,那麼它不能完成,但我想探索我的選擇,到目前爲止,我想不出有什麼辦法可以得到這個日期......噓......任何人有任何想法?

+0

解析後不會保留註釋,因此您需要像打開文本文件一樣打開文件,然後手動讀取註釋。然後你可以將它解析爲文件中的日期變量 – jzworkman 2012-03-02 15:36:26

+0

@ T.J.Crowder很好,但是他們不能以他想訪問的方式訪問其他文件,我只是寫得很差。我編輯它以反映這一點。 – jzworkman 2012-03-02 15:37:57

回答

3

所以我的問題是,不知何故註釋存儲在DOM中......

都能跟得上。

...還是有一些其他方式來訪問此文件的內容,我可以使用正則表達式來刮取它等。

不通過ajax第二次加載它,這將受SOP限制。例如,你可以爲文件做一個ajax GET,它會給你它的文本,然後應用正則表達式來查找「Last updated:」之後的位。但.js文件必須與您在HTML文檔中執行此操作的HTML文檔位於相同的原始位置(請參閱鏈接以瞭解原因)。

理想的情況下,如你所說,你要修改的第一個文件,以便它保存在一個變量,你可以訪問該日期。 (這可能會最終成爲一個全局變量,這是不太理想的,除非你已經有一些其他全球性,你可以把它貼在一個屬性。)

+1

本地.js文件非常短,所以作爲一個短期解決方案,我不介意第二次加載它,但正如您所指出的那樣,我知道無論如何我都無法使用ajax。我猜想沒有其他的魔杖丟失了,但沒有傷害。謝謝! – slinkhi 2012-03-02 15:56:15

+0

@mysql_noobie_xxxx:正如你所說,在詢問中沒有任何傷害!祝你好運, – 2012-03-02 16:01:12

0

你也許可以使用反射來做到這一點。 This link解釋讓代碼註釋出使用正則表達式的函數體中的相當複雜的方式,所以也許這可能與整個文件也需要這樣做,但它可能比使用本地變量多了很多麻煩。

我建議使用正則表達式來提取數據和寫回該文件作爲一個局部變量使用PHP或東西循環遍歷問題的文件。可能不那麼頭疼。

+1

*「你也許可以用反射來完成它。」*不是OP所描述的,不是;甚至在個別職能上也不可靠。首先,該技術僅適用於特定函數的源,因爲它使用'函數#toString'。其次,'Function#toString'從來沒有標準化過,實現返回任何喜歡的東西,包括「代碼在這裏」(雖然所有主要的桌面瀏覽器都是返回源)是完全可以接受的。第三,並不是所有使用'toString'提供源代碼的瀏覽器都包含註釋。 – 2012-03-02 15:51:43

+0

夠公平的。看起來像'正確'的方法是唯一的方法。 – 2012-03-02 15:54:15