Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome extension 如何在dart中使用chrome.webRequest API_Google Chrome Extension_Dart - Fatal编程技术网

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
软件包需要修复。同时,可以使用旧的good
dart: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]);