2010-02-08 31 views
3

我有一個JavaScript文件,我在HTML中使用標準<script src="foo.js?param"></script>來引用。在我想區分的文件中從foo.js?autofoo.js?noauto=true加載文件foo.js,但如果該文件被重命名爲bar.js並且使用相同的參數引用,則不會。我怎樣才能做到這一點,最好不使用任何框架?獲取.js文件的參數

+0

可能的重複:http://stackoverflow.com/questions/1954099/help-me-to-understand-script-srcsome-jsparam1oneparam2two – 2010-02-08 12:41:20

回答

5

看看一個Scriptaculous的方法:

var js = /scriptaculous\.js(\?.*)?$/; 
$$('head script[src]').findAll(function(s) { 
    return s.src.match(js); 
}).each(function(s) { 
    var path = s.src.replace(js, ''), 
    includes = s.src.match(/\?.*load=([a-z,]*)/); 
    (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(
    function(include) { Scriptaculous.require(path+include+'.js') }); 
}); 

我覺得它貫穿所有腳本元素,並找到自身的基準,然後分析該URL。

1

如果你想要可靠地做到這一點,那麼你需要爲每個URL提供不同的JS。您可以使用服務器端腳本生成它。

如果您想要在純JS中執行此操作,則可以使用getElementsByTagName('script')並假定上一個腳本是匹配的腳本(它可能不是,例如,在頁面加載後使用DOM添加腳本元素)。

+0

好主意,但我想我應該警告用戶不要更改包含的名稱文件或調用一些方法以防身體加載時顯式執行。 – Residuum 2010-02-08 18:09:25