问题:
最近在开发一个chrome扩展应用时需要web页面和浏览器扩展通信,看文档说用chrome.runtime.sendMessage,但是调用时遇到这个报错:
Uncaught TypeError: Cannot read property ‘sendMessage’ of undefined
网上搜索了一通,居然都没人解决,甚至stackoverflow上这个问题下都没有回答,就很头大,解决问题后才知道,这个问题确实有些白,可能只有新手才会遇到吧,哈哈哈。
解决:
网上很多文档都有说,扩展应用与网页通信需要调用chrome.runtime.sendMessage,但是很关键的一点没说:
chrome.runtime.sendMessage需要在content_scripts配置下的js文件里调用,而不是直接在web页面的js文件里直接调用。
也就是说chrome.runtime.sendMessage的web页面和浏览器扩展/js通信其实是通过注入的js与扩展通信。