美文网首页
Chrome扩展开发数据通信问题

Chrome扩展开发数据通信问题

作者: 亦庄攻城狮 | 来源:发表于2018-03-15 10:11 被阅读0次

应用场景:网站嵌入 content_main.js文件 需要与background.js相互通信回调

//content_main.js
chrome.runtime.sendMessage({addurl:_url,adddata:data,msg:"contentRequest"}, function(response) {
                if(response.status){
                                        ...
                }else{
                    ...
                }
            });
//background.js
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
    if (request.msg=="contentRequest"){
              //ajax settimeout 等一系列异步操作时发现content_main response接不到回调值 undefined
              ajax({
                type:'post',
                // contentType: 'application/x-www-form-urlencoded',
                contentType: 'application/json; charset=utf-8',
                url:request.addurl,
                // data:{'documents':bibliographic_data},
                data:request.adddata,
                success:function(w){
                    if(w.code==200){
                        sendResponse({status:1,msg:"保存成功!"});
                    }else{
                        sendResponse({status:0,msg:"保存失败,错误代码1001"});
                    } 
                    return true;
                },
                error: function(xhr,info,e,){
                    sendResponse({status:0,msg:"保存失败,错误代码1002"});           
                },
            })
                return true;//  原因在此   完美解决
        }
});

注:使用嵌入式开发有个弊端即在https网站嵌入发异步请求即在content_main中发后台请求会若服务为http服务会发生请求被拒绝问题,上述案例也完美的解决该问题,仅供参考具体以实际开发情况为主。

相关文章

网友评论

      本文标题:Chrome扩展开发数据通信问题

      本文链接:https://www.haomeiwen.com/subject/xovcqftx.html