我想動態地替換腳本的源url以加速dev階段,所以沒有實際的生產用法。這種替換適用於CSS或圖像。但是很難讓它與javascript src一起工作。該腳本似乎沒有執行,雖然通過src加載。使用jquery替換腳本src沒有執行
這是我所做的。
..................
return this.each(function() {
$(this).click(function() {
var t = $(this);
options.newVal = t.val();
var absUrl = '/root_path_still_within_the_same_domain/';
//options.oldVal is just to limit the replacement scope
var oldJsUrl = absUrl + options.oldVal + '.js';
var newJsUrl = absUrl + options.newVal + '.js';
var reJsUrl = $('script[type*=javascript][src*=' + options.oldVal + ']' || 'script[type*=javascript][src*=' + options.newVal + ']');
if (oldJsUrl.length && options.oldVal.length) {
reJsUrl.attr('src', newJsUrl);
}
options.oldVal = options.newVal;
});
});
......................
在Firebug中,目標老src網址(/old_path_to_file.js)被替換爲新的(/new_path_to_file.js)。所以更換工作。但它報告,(看到真正的絕對URL的http://,如果相關):
無法加載來源:http://localhost/........js
所以腳本SRC被替換,但不執行。任何我錯過的東西,如果這東西是允許的呢?我也嘗試過使用$ .getScript(absUrl + options.newVal +'.js');但是這並不是取代舊的src,只是向dom添加了更多的js,這不是我想要的。這部分的任何暗示呢?
感謝您的所有幫助。
那麼,我應該採取什麼樣的路線?也許$ .getScript替換?你能否提供一些例子來說明如何取消定義和取消附加事件?謝謝 – swan 2010-02-09 03:31:04
嗯......好吧,我想我必須看看原始腳本的樣子。 – Hogan 2010-02-09 04:03:32
每個處理相同事物的腳本都是不同的: one.js:$('。rounded')。corner(「8px」);兩個.js:$('。rounded')。corner(「6px」);等更復雜的相關內容。我試圖避免將它們合併成一個具有條件的腳本,因爲它們需要在開發完成時單獨生活。 – swan 2010-02-09 04:16:10