gpt4 book ai didi

javascript - 在chrome扩展后台js中访问$http

转载 作者:行者123 更新时间:2023-12-02 16:06:34 25 4
gpt4 key购买 nike

我的 chrome 扩展的前端弹出窗口可以正常工作,但我需要后台脚本来执行 ajax 请求,我什至无法开始思考如何在那里获取 Angular 的 $http。

具体来说,我将通过调用 chrome API“chrome.runtime.sendMessage”来响应 ajax 结果。

所以目前我已经在background.js中连接了我的监听器

var someData="TESTDATA";
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
sendResponse(someData);
});

我想要的是

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
$http({
method: 'GET',
url: "http://autocomplete.wunderground.com/' +
'aq?query=" +
'query'
}).success(function(data) {
sendResponse(data.RESULTS);
}).error(function(err) {
console.log(err);
});
});

即使 angular.js 位于后台的 list 文件中,这显然也不起作用。

如何在此设置中使用 Angular $http 对象?(我没有background.js的html页面)

最佳答案

要使用 $http,您必须位于 Controller 、指令或 Angular 服务内。

要按照您的方式进行操作,您可以创建一个全局变量,然后在 Controller 中您应该将$http分配给您创建的变量。

var $http2;

myApp.controller('foo', ["$scope", "$http", function($scope, $http){
$http2 = $http;
});

//Now you have access to: $http2({method:...})

或者你可以用更简单的方式来做到这一点:

var x = new XMLHttpRequest();
x.onload = function () {
if(x.status == 200) {
console.log(x.responseText);
sendResponse(x.responseText);
}
};
x.onerror = function(err) {
console.log(err)
};
x.open('GET', 'http://autocomplete.wunderground.com/' + 'aq?query=' + 'query');
x.send()

关于javascript - 在chrome扩展后台js中访问$http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30671629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com