2016-12-17 184 views
14

我有一個奇怪的問題,浪費了太多時間。 我有內容腳本,試圖從storage.sync API讀取一些數據,但它失敗。內容腳本中的Chrome擴展程序storage.sync.set引發異常

我已經添加了存儲權限 ,並且我可以在options.js文件中使用storage.sync API。

你能發現哪裏出了問題嗎?

document.addEventListener('DOMContentLoaded', function() { 

    chrome.storage.sync.get([ 
      'var1', 
      'var2',   
     ], function(items) {   
      alert("got it"); 
    }); 
} 

這是錯誤消息:

CONTENT_SCRIPT context for xxxxx) Lazy require of extension.binding did not set the binding field

(CONTENT_SCRIPT context for xxxxx) extensions::lastError:82: Uncaught TypeError: Cannot convert undefined or null to object{TypeError: Cannot convert undefined or null to object at Object.clear (extensions::lastError:82:23) at handleResponse (extensions::sendRequest:84:15) at restore at HTMLDocument.}

+0

從你提供的內容來看,你的代碼片段和錯誤是否相關並不是很清楚。 – pvg

+0

與此相關我使用了調試器,並且在調用存儲API後顯示此錯誤。這是代碼的簡化版本。 – embedded

+1

那麼,你將不得不想出一個能夠證明問題的[MCVE],因爲就目前而言,除了只是猜測之外,沒有任何人能夠幫助你的明確方式。 – pvg

回答

1

我把代碼注入HTML頁面時有同樣的問題。注入html後立即使用新的id似乎會使調試器崩潰,但不會使頁面本身崩潰。一切正常,錯誤消息只在注入代碼時彈出一次。 看起來它來自緩存。它只是在刷新頁面時發生過一次,並且在清除緩存之後從未發生過......對不起,這不是非常有用,但這是我所擁有且無法再現的內容。

+0

謝謝,這是由魔術整理:) – embedded

14

我也遇到了同樣的錯誤。我通過禁用並重新啓用我的Chrome瀏覽器擴展來修復它。希望有所幫助。

+1

爲我工作。謝謝。 – Yaron

+1

這有助於其他一些時間,其他時候由@Sudheer提供的解決方案(未設置調試斷點)。 –

29

我有相同的錯誤,這是由於調試器停止中間的執行流。 一旦我刪除了「內容腳本」和「後臺腳本」中的調試器/斷點並重新加載了所有內容,我就沒有看到該錯誤。

+2

感謝它爲我工作:) – Sajan

+1

這有助於一些時候,解決方案通過@deprog(禁用重新啓用)其他時間。 –

+0

聽起來很有趣,但它是有效的。謝謝! –

相關問題