Firefox插件 - 如何在Chromeworker中使用XMLHttpRequest?

时间:2015-05-19 10:22:17

标签: ajax xmlhttprequest firefox-addon

我正在使用ChromeWorker从API下载一些数据。 我正在尝试在 myWorker.js 中导入XHR。

importScripts("resource://gre/modules/workers/require.js"); var { XMLHttpRequest } = require("sdk/net/xhr");

运行 cfx run

时出现以下错误
Error: TypeError: The argument to require() must be a string uri, got sdk/net/xhr

我正在使用此演示https://github.com/Noitidart/ChromeWorker 如何在 myWorker.js 中导入和使用XMLHttpRequest?

1 个答案:

答案 0 :(得分:2)

我修改了我的非工作XHR功能以在ChromeWorker中工作,但它不完美,因为我不知道如何在ChromeWorker版本中设置loadFlags,就像在ChromeWorker版本中没有.channels一样,很奇怪

https://gist.github.com/Noitidart/ec1e6b9a593ec7e3efed

我的功能使用了一个承诺方案,但你可以不用这样做:

var aOptions = {
responseType: 'text'
}
var aStr = 'http://www.bing.com/';
let xhr = new XMLHttpRequest();
let evf = f => ['load', 'error', 'abort'].forEach(f);
    if (aOptions.aPostData) {
        xhr.open('POST', aStr, true);
        //xhr.channel.loadFlags |= aOptions.aLoadFlags; // i dont know how to do this from ChromeWorker yet
        xhr.responseType = aOptions.aResponseType;
        xhr.send(aOptions.aPostData);       
    } else {
        xhr.open('GET', aStr, true);
        //xhr.channel.loadFlags |= aOptions.aLoadFlags; // i dont know how to do this from ChromeWorker yet
        xhr.responseType = aOptions.aResponseType;
        xhr.send(null);
    }

跳转到moz js-ctypes irc频道获取更多帮助:) irc:// moznet / jsctypes