在Chrome扩展程序中将数据从“事件页面”返回到“内容脚本”

时间:2015-02-20 16:02:59

标签: javascript json asynchronous google-chrome-extension

我只是尝试使用Chrome扩展程序开发。

我写的代码很简单,它从后台事件页面访问Fixer.io API以获取外汇汇率,然后将这些汇率返回给内容脚本。

我尝试了以下问题:[如何从异步调用中返回响应? ] [1]。但现在我很困惑,最终得到了这段代码。

有人可以帮我理解如何实现这个目标吗?

contentScript.js

document.addEventListener('mouseup',function(event)
                          {
    
                            //console.log("Event triggered");
                            
                            var selectedText=document.getSelection().toString(); //variable to store selected text
                            
                            if(selectedText.length)
                            {
                                console.log("Selected Text is "+selectedText);
                                
                                                         
                                var amount=1;
                                var base="USD";
                                
                                //Get the Exchange Rate from eventPage.js
                                chrome.runtime.sendMessage({amt: amount, bs: base},function(response){
                                                    console.log("Converted Amount: "+response.convert);});
                            }
});

背景Event.js

function convertAmount(callback){
        
            var xhr=new XMLHttpRequest(); //creating a XMLHttpRequest Object

            xhr.open("GET","http://api.fixer.io/latest?base=INR",true); //Open async connection to the API
            
            xhr.onload=function returnResponse(){
                callback(xhr.responseText);
            }

            xhr.send(null);
    
}

function getRate(rate){
                   
            var json=JSON.parse(rate);

            convertedAmount=json.rates.USD;

            console.log("In Callback: "+convertedAmount);
            
            chrome.runtime.onMessage.addListener( function(request,sender,sendResponse){
    
            console.log("Converted Amount: "+convertAmount(getRate));
            
            sendResponse({convert: 60 });
            
            });
        }

0 个答案:

没有答案