webRequest后台请求适用于Chrome,但不适用于FF

时间:2016-12-29 15:08:27

标签: javascript google-chrome-extension firefox-addon firefox-webextensions

在Chrome中,我可以通过在过滤器中指定tabId:-1来使用webRequest来侦听来自后台的请求,但这在FF中不起作用。此外,如果我删除tabId标准并收听所有请求,它会接收在前端发出的请求,但仍然不在后台。以下是我正在尝试的内容:

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock {
[self sd_cancelCurrentImageLoad];
objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

if (!(options & SDWebImageDelayPlaceholder)) {
    dispatch_main_async_safe(^{
        self.image = placeholder;
    });
}

if (url) {

    // check if activityView is enabled or not
    if ([self showActivityIndicatorView]) {
        [self addActivityIndicator];
    }

    __weak __typeof(self)wself = self;
    id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) {
        [wself removeActivityIndicator];
        if (!wself) return;
        dispatch_main_sync_safe(^{
            if (!wself) return;
            if (image && (options & SDWebImageAvoidAutoSetImage) && completedBlock)
            {
                completedBlock(image, error, cacheType, url);
                return;
            }
            else if (image) {
                wself.image = image;
                [wself setNeedsLayout];
            } else {
                if ((options & SDWebImageDelayPlaceholder)) {
                    wself.image = placeholder;
                    [wself setNeedsLayout];
                }
            }
            if (completedBlock && finished) {
                completedBlock(image, error, cacheType, url);
            }
        });
    }];
    [self sd_setImageLoadOperation:operation forKey:@"UIImageViewImageLoad"];
} else {
    dispatch_main_async_safe(^{
        [self removeActivityIndicator];
        if (completedBlock) {
            NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Trying to load a nil url"}];
            completedBlock(nil, error, SDImageCacheTypeNone, url);
        }
    });
}
  }

这是预期的行为还是有办法在FF中监听来自后台的请求?

1 个答案:

答案 0 :(得分:0)

这是由于FF中的错误。该修复计划于3月17日到期的第52版。

https://bugzilla.mozilla.org/show_bug.cgi?id=1273138