2014-09-06 51 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

相关问题