2013-01-25 58 views
9

我有一個基於Web的Android應用程序,它使用WebSQL進行存儲。出於某種原因,在一個點(響應按鈕單擊)調用openDatabase,導致DOMException帶有消息"SECURITY_ERR: DOM Exception 18"SECURITY_ERR:DOM上的異常18 openDatabase上

請注意,我沒有使用PhoneGap。

我在這裏問的主要問題是openDatabase上DOMException 18的可能原因是什麼?

更多詳細信息: 只有在數據庫尚不存在的情況下才會發生此異常。如果它已經存在,它按預期工作。調用openDatabase的函數在應用程序的另一部分中使用,並且工作得很好。

我到目前爲止已經試過

  • 減小數據庫的大小 - 因爲它是由應用程序的另一部分產生不應該是一個問題。
  • 我檢查過外部存儲權限 - 再次,不應該是一個問題。
  • 我在某處讀到插入的USB電纜可能導致此問題 - 在這種情況下不會造成這種情況。

編輯: 這是命令的樣子:

db = openDatabase('my_database', '1.0', 'My database description', 5*1024*1024, function() {}); 
+0

是問題解決了......我面臨同樣的問題... – Aravin

+1

從來沒有找出原因是什麼。最後,我發現WebSQL的穩定性在我的需求不同的Android設備/版本上過於不一致,所以我最終編寫了一個原生界面,結果證明它更好。雖然我不再需要這個問題的答案,但是出於好奇的緣故,我仍然有興趣聽到一個問題。 – Goldsmith

+0

我解決了這個問題..嚴格地說在設備就緒功能裏面打開數據庫.... – Aravin

回答

1

根據規範the spec,它只有兩個

  • 用戶代理原因可能提高SECURITY_ERR異常,而不是在請求違反策略決定時返回數據庫對象(例如,如果用戶代理是conf設置爲不允許該頁面打開數據庫)。

  • 如果原產地是不是一個方案/主機/端口元組,則拋出一個異常SECURITY_ERR

+0

這兩個調用具有相同的來源,並且用戶代理在加載頁面之前進行配置。 – Goldsmith

+0

應該有東西。我只能在你顯示你的代碼時纔算出來 –

2

我發現它有與數據庫的允許的大小做。 如果您嘗試在iOS上打開一個大於50mb的數據庫,會出現此錯誤。

+0

雖然如果你超過了大小限制,如果opendatabase導致完全相同的錯誤,我不會感到驚訝,但這裏並不是這樣。就像我說的,它在應用程序的另一部分中成功創建。另外,我已將限制設置爲5 MB。 – Goldsmith

相關問題