簡體   English   中英

刪除JS文件並包含另一個

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM