我正在嘗試爲Firefox和Chrome編寫跨瀏覽器擴展。 Firefox使用commonJS規範,Chrome只是將所有內容整合到全局名稱空間中,如網頁。有條件地要求commonJS AMD模塊代碼
爲了能夠編寫可重用代碼,我試圖在Chrome擴展中使用requireJS來存放代碼,這樣我就可以編寫commonJS模塊,並讓它們在兩種環境中都能正常工作。
當我需要有條件地需要模塊時,我遇到了一個問題。例如,Firefox可以訪問您應該用來訪問本地存儲的simple-storage
模塊。在Chrome中,我需要使用它們提供的localStorage API。所以,我一直在試圖做到這一點:
但是,這似乎並不奏效。當我嘗試加載Chrome擴展我得到以下錯誤:
是否有需要有後備的模塊更好的辦法?
不一定完全與此有關,但「最終」將無論try塊是否引發異常,都要運行。所以即使你的try塊通過,finally塊也會覆蓋store。那是你想要的嗎?如果沒有,我相信一個嘗試/抓住就是你所追求的。 –
如果你的try塊會拋出一個錯誤,finally塊會被執行,並在錯誤被重新拋出之後 – Esailija
ops抱歉,我的意思是catch。無論哪種方式,結果都是一樣的。 –