chrome 扩展通过共享本地存储将多条消息传递到外部站点

Posted

技术标签:

【中文标题】chrome 扩展通过共享本地存储将多条消息传递到外部站点【英文标题】:chrome extension passing multiple message to external site by sharing local storage 【发布时间】:2021-07-26 18:05:47 【问题描述】:

**

已解决

**

我正在开发一个 chrome 扩展程序。在 *** 上阅读我能够在不同域之间共享本地存储,并将数据从扩展发送到我的外部站点。

然而,我想做的是向外部站点发送多个消息。如何调整我正在使用的代码?我对js不是很熟悉,抱歉

这是 popup.html 上的代码 -> 扩展(功能完美)

window.onload = function() 
    var receiver = document.getElementById('receiver').contentWindow;

    var btn = document.getElementById('send');

    function sendMessage(e) 
          e.preventDefault();

        receiver.postMessage(document.getElementById('D1').value, 'http://externalsite');

    

    btn.addEventListener('click', sendMessage);

这是外部网站上的代码 -> 接收者

window.onload=function() var messageEle=document.getElementById('message');

window.addEventListener('message',receiveMessage);
function receiveMessage(e)
    if(e.origin!=="chrome-extension://ldjfmalmmomhpjmoeemlaingagdhagjl")
    return;
    messageEle.value = e.data;


我需要的是发送更多的

   receiver.postMessage(document.getElementById('D1').value, 'http://externalsite');

例如

receiver.postMessage(document.getElementById('D1').value, 'http://externalsite');
receiver.postMessage(document.getElementById('D2').value, 'http://externalsite');
receiver.postMessage(document.getElementById('D3').value, 'http://externalsite');

非常感谢

【问题讨论】:

发送id: 'D1', value: document.getElementById('D1').value等对象 感谢您的回复,您能给我一个我的代码示例吗? 【参考方案1】:

为了帮助别人,我在这种模式下解决

在扩展的 popup.html 代码中

window.onload = function() 
    var receiver = document.getElementById('receiver').contentWindow;
    var data = 
        domanda1: (document.getElementById('D1').value),
        domanda2: (document.getElementById('D2').value),
        domanda3: (document.getElementById('D3').value)
;

    var btn = document.getElementById('send');

    function sendMessage(e) 
        e.preventDefault();

        receiver.postMessage(data, 'externaldomain');

    

    btn.addEventListener('click', sendMessage);

并在接收者页面-外部站点-带有代码

window.onload=function()
    var domanda1=document.getElementById('domanda1');
    var domanda2=document.getElementById('domanda2');
    var domanda3=document.getElementById('domanda3');

    window.addEventListener('message',receiveMessage);
    function receiveMessage(e)
        if(e.origin!=="chrome-extension://ldjfmalmmomhpjmoeemlaingagdhagjl")
        return;
        domanda1.value = e.data.domanda1;
        domanda2.value = e.data.domanda2;
        domanda3.value = e.data.domanda3;
    

ps = 感谢 wOxxOm 的帮助

【讨论】:

以上是关于chrome 扩展通过共享本地存储将多条消息传递到外部站点的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 扩展:本地存储,如何导出

如何在 chrome 扩展本机消息传递和 c# 应用程序之间发送/接收消息

本机消息传递主机 chrome-token-signing

来自 Chrome 扩展的 X11 / DBUS 消息传递?

“共享内存模型”与“消息传递模型”

Chrome 扩展的原生消息传递