我只是尝试使用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 });
});
}