0

想要通过在浏览器页面的chrome扩展中向contentcript.js发送状态值,通过向新创建的事件添加一个值,将其传递给扩展,但收到的价值为'未定义'。 代码如下。在Chrome扩展中从网页传递到contentscript.js的消息

page.html中

<html> 
<head></head> 
<body> 
<script> 
    var go = function() { 
    var sam=1; 
     var event = document.createEvent('Event',{"details": 1}); 
     event.foo=sam; 
     event.initEvent('hello'); 
     document.dispatchEvent(event); 
    } 
</script> 
<a href="javascript:go();">Click me</a> 
</body> 
</html> 

我试图访问 '富' 和 '状态'(要么这个)的值,但得到这两个值 '未定义'。

contentscript.js

document.addEventListener("hello", function(data) { 
    alert("test:foo "+data.foo+":"+data.status); 
}) 

请让我知道如何访问值。

+0

我不会让自己太难。只需用东西填充一个隐藏的dom元素,并且一旦它加载,让你的扩展读取来自dom的数据。你真的不必在纯js –

+0

Hi @Thou艺术惊人的,我可以得到一些关于这个话题的例子链接? –

回答

0
Based on documentation from: [https://developer.chrome.com/extensions/messaging#external-webpage][1] 

    - manifest.json 

    "externally_connectable": { 
     "matches": ["*://<your extension id>/*/page.html"] 
    } 

    page.html: 
    // The ID of the extension we want to talk to. 
    var editorExtensionId = "abcdefghijklmnoabcdefhijklmnoabc"; 

    // Make a simple request: 
    chrome.runtime.sendMessage(editorExtensionId, {"details": 1}, 
     function(response) { 
     if (!response.success) 
      handleError(url); 
     }); 

    contentscript.js 

    chrome.runtime.onMessageExternal.addListener(
     function(request, sender, sendResponse) { 
     if (sender.url === blacklistedWebsite) 
      return; // don't allow this web page access 
     if (request.details) 
      //process message 
     }); 
+0

请注意,对于Firefox 54,这不适用于Firefox。请参阅https://stackoverflow.com/questions/44592605/firefox-webextension-check-if-my-extension-exists查找可能的解决方案。 –

相关问题