Har*_*are 3 javascript google-chrome google-chrome-extension
我想在这里实现的是XHRHttpRequest()对一个worker 执行一个加速我的扩展.我使用worker_proxy.js来自这里.除了我无法弄清楚如何将字符串传递给这个worker之外,它工作得很好.这是我的代码:
的manifest.json
"permissions": [
"alarms",
"activeTab",
"tabs",
"webNavigation",
"http://*/*",
"https://*/*",
"cookies"
],
"options_page": "options.html",
"background": {
"persistent": false,
"scripts": [ "worker_proxy.js","background.js"]
},
"content_scripts": [
{
"matches": ["https://*/*","http://*/*"],
"js": ["jquery-2.1.4.js","hmac-sha256.js","enc-base64-min.js","worker_proxy.js","content.js"]
}
],
"web_accessible_resources": [ "worker_proxy.html","worker.js"],
Run Code Online (Sandbox Code Playgroud)
worker.js
var somestring=getStringFromContentJS()
var xhr=new XMLHttpRequest();
var request="GETgoogle.com"
xhr.open("GET", request, false);
xhr.send(someString);
postMessage('Result\n' + xhr.responseText);
Run Code Online (Sandbox Code Playgroud)
content.js
var az_worker = new Worker(chrome.runtime.getURL('getAzProducts.js'));
az_worker.onmessage = function(event) {
alert('Message from worker: ' + event.data);
};
Run Code Online (Sandbox Code Playgroud)
我能够从worker.js接收数据,但是如何向其发送数据,即
var somestring=getStringFromContentJS()
要将数据发送给worker,只需将以下内容添加到worker.js的顶部:
self.onmessage = function(event) {
// Do something with event.data
};
Run Code Online (Sandbox Code Playgroud)
并用于az_worker.postMessage(somestring);向其发送数据.
但是你的代码不必要地复杂.如果您的目标是"加速我的扩展",那么您不应该使用Web worker来创建同步XHR,而是在主线程上使用异步XHR.Web Workers非常适合CPU绑定任务,但不会为网络请求等I/O任务提供任何优势.
有关使用XMLHttpRequest的教程,请参阅https://developer.mozilla.org/en-US/docs/AJAX/Getting_Started和https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest.
| 归档时间: |
|
| 查看次数: |
3413 次 |
| 最近记录: |