2014-09-06 62 views
0

我想從我的background.js發送一個對象到contentscript.js。執行此操作的功能是這些:從後臺腳本發送對象到內容腳本

// contentscript.js 

chrome.extension.sendMessage({ message: 'getdata' }, function(response) { 
    console.log(response.data); // Object {} 
    console.log(response.data.property); // ERROR (see below) 
}); 

-

// background.js 
var data = { property: 'test' }; 

chrome.runtime.onMessage.addListener(
    function(request, sender, sendResponse) { 
     if (request.message === 'getdata') { 
      sendResponse({ data: data }); 
     } 
    } 
); 

-

The error: 
Error in event handler for (unknown): Cannot read property 'property' of undefined 
Stack trace: TypeError: Cannot read property 'property' of undefined 
    at chrome-extension://neneohfdjobjkpbdmapenhmpmofmnmpo/scripts/contentscript.js:99:70 
    at messageListener (extensions::messaging:343:9) 
    at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14) 
    at EventImpl.dispatchToListener (extensions::event_bindings:397:22) 
    at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14) 
    at Event.$Array.forEach.publicClass.(anonymous function) [as dispatchToListener] (extensions::utils:93:26) 
    at EventImpl.dispatch_ (extensions::event_bindings:379:35) 
    at EventImpl.dispatch (extensions::event_bindings:403:17) 
    at Function.target.(anonymous function) (extensions::SafeBuiltins:19:14) 
    at Event.$Array.forEach.publicClass.(anonymous function) [as dispatch] (extensions::utils:93:26) 

我希望有人能幫助我,謝謝!

回答

1

您將已棄用的chrome.extension.sendMessagechrome.runtime.onMessage混合在一起。這導致各種有趣的東西。

解決方法:忘記chrome.extension.sendMessage/chrome.extension.sendRequest並存在相應的事件。

切換到chrome.runtime.sendMessage

+1

嗯,這是一個很好的結果。但它並沒有解決我的問題。仍然收到相同的錯誤消息。 – DennisvB 2014-09-06 13:13:01

+0

然後我建議您仔細檢查變量和字符串常量中的拼寫錯誤。另外,在後臺腳本上運行調試器以確保數據正在發送。 – Xan 2014-09-06 13:15:02

相關問題