[英]Remove JS file and include another
我開始使用離線網絡應用程序。 我有一個小的測試應用程序,它在脫機時使用localstorage進行簡單處理,我的想法是,當它在線時,該應用程序使用php作為后端語言,並在連接恢復時同步localstorage和php。
現在,用於將數據保存到本地存儲的功能不同於用於將數據發送到php的功能。
從動力學上講,是否可以卸載一個JS文件(我們將其稱為offline.js)並加載另一個(online.js)?
還是巫婆會是更好的方法? 我是否應該將所有功能都包含在一個文件中,然后動態更改偵聽器?
如果瀏覽器處於聯機狀態,則應該具有“函數包裝器”以啟動IF條件檢查。
例如:
function SaveData(data){
if(BrowserIsOnline)
SaveDataToPHPServer(data);
else
SaveDataToLocalStorage(data);
並以不同的方式處理每個功能主體。
您無法卸載javascript文件。 一旦加載,它將始終被加載。 您可能需要重新考慮一下您的設計。
在現代瀏覽器中,您可以使用navigator.onLine來檢查連接。 規格如下: http : //www.w3.org/TR/offline-webapps/
var connection = navigator.onLine;
if( connection ){
//Do AJAX
}else{
//Do Local Storage.
}
這是一個可能有用的解決方案,您可能會發現...
在所有邏輯都駐留在其中的函數名稱空間中,例如:
this.fn = {};
this.fn['save'] = function() {};
this.fn['load'] = function() {};
當事件觸發時,您只需使用適當的函數即可,如下所示:
var fn = this.fn['load'];
要么
var fn = this.fn['save'];
然后像往常一樣使用“ fn”。
您甚至可以按模塊分隔功能,例如“ online.js”和“ offline.js”,其中每個模塊將具有相同的功能名稱,但綁定到其自己的名稱空間。
當需要重新鏈接功能時,您可以執行以下操作:
this.fn['load'] = offlineModule.fn['load'];
如果您為所有函數都命名(例如:“ load”,“ save”),則可以將其循環使用。
上面的方法避免了所有“ if / else”條件分支,這些分支有時會變得煩人,而是嘗試使用一種模式。
但無論如何,這都是一個很大的問題,因為我正在開始一個項目的計划階段,因此我將需要與您在問題中所描述的內容類似的東西……到目前為止,這是我為此提供的最佳解決方案。 本質上是受Linux中SO的動態鏈接的啟發。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.