Google chrome extension 如何在dart中使用chrome.webRequest API
我想在Google chrome extension 如何在dart中使用chrome.webRequest API,google-chrome-extension,dart,Google Chrome Extension,Dart,我想在chrome.webRequestAPI中注册一个监听器,如下面的JS示例所示: var initHttpRequestObserver = function () { chrome.webRequest.onBeforeSendHeaders.addListener( function (details) {...}, {urls: ["<all_urls>"]}, ["blocking", "requestHeader
chrome.webRequest
API中注册一个监听器,如下面的JS示例所示:
var initHttpRequestObserver = function () {
chrome.webRequest.onBeforeSendHeaders.addListener(
function (details) {...},
{urls: ["<all_urls>"]},
["blocking", "requestHeaders"]);
}();
不幸的是,我无法找到如何提供必需的
过滤器
和opt_extraInfoSpec
参数在对chrome
包进行了一些分析之后,似乎无法预见使用多个参数(回调)调用addListener
。common.dart
包含执行实际调用的私有方法:
void _ensureHandlerAdded() {
if (!_handlerAdded) {
// TODO: Workaround an issue where the event objects are not properly
// proxied in M35 and after.
var jsEvent = _api[_eventName];
JsObject event = (jsEvent is JsObject ? jsEvent : new JsObject.fromBrowserObject(jsEvent));
event.callMethod('addListener', [_listener]);
_handlerAdded = true;
}
}
显然event.callMethod('addListener',[\u listener])代码>未提供其他参数
“官方”chrome
软件包需要修复。同时,可以使用旧的gooddart:js
并执行以下操作:
JsObject _OnBeforeSendHeaders = context['chrome']['webRequest']['onBeforeSendHeaders'];
var filter = new JsObject.jsify({"urls": ["<all_urls>"]});
var opt_extraInfoSpec = new JsObject.jsify(["blocking", "requestHeaders"]);
_OnBeforeSendHeaders.callMethod('addListener', [_processCallback, filter, opt_extraInfoSpec]);
JsObject\u OnBeforeSendHeaders=context['chrome']['webRequest']['OnBeforeSendHeaders'];
var filter=new JsObject.jsify({“URL”:[“”]});
var opt_extraInfoSpec=new JsObject.jsify([“blocking”,“requestHeaders]”);
_callMethod('addListener',[\u processCallback,filter,opt\u extraInfoSpec]);
JsObject _OnBeforeSendHeaders = context['chrome']['webRequest']['onBeforeSendHeaders'];
var filter = new JsObject.jsify({"urls": ["<all_urls>"]});
var opt_extraInfoSpec = new JsObject.jsify(["blocking", "requestHeaders"]);
_OnBeforeSendHeaders.callMethod('addListener', [_processCallback, filter, opt_extraInfoSpec]);