适用于Firefox的chrome.webrequest.onbeforerequest.addlistener?

时间:2013-06-14 16:16:12

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

Google Chrome在其chrome.webrequest API中包含一些功能(例如, http://developer.chrome.com/extensions/samples.html#12a7bf1490a26359eadf10917e37c5b9) 可用于将某些URL重定向到指定的网页。 Chrome扩展程序使用阻止事件侦听器(chrome.webRequest.onBeforeRequest.addListener)并对目标网址执行重定向。我如何在FireFox附加组件中做类似的事情?

3 个答案:

答案 0 :(得分:0)

这个问题被问了很长时间。我不知道当时是否有解决方案。但现在我们可以使用Firefox WebExtensions API执行此类操作。

在大多数API中它与Chrome兼容(虽然其中一些不受支持,或者不完全支持)。

对于这个非常具体的问题,Firefox WebExtensions支持webRequest API,您可以像使用Chrome一样使用它:

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Doctrine\ORM\EntityRepository;

class OrganisationUserType extends AbstractType
{

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $builder
            ->add('user_id', 'entity', array(
                'class' => 'AppBundle:User',
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('u')
                        ->where('u.id > :id')
                        ->setParameter('id', '1')
                        ->orderBy('u.username', 'ASC');
                },
                'choice_label' => 'username',
                'required' => false,
            ));
    }

    /**
     * @param OptionsResolver $resolver
     */
    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'AppBundle\Entity\OrganisationUser',
        ));
    }

}
  

注意:要使用chrome.webRequest.onBeforeRequest.addListener(...); API,您必须在manifest.json中拥有webRequest权限。

答案 1 :(得分:0)

您可以使用browser命名空间使用相同的请求格式。下面是相同的示例代码。这里的listener是一个回调函数。

browser.webRequest.onBeforeRequest.addListener(
  listener,             // function
  filter               //  object
)
browser.webRequest.onBeforeRequest.removeListener(listener)
browser.webRequest.onBeforeRequest.hasListener(listener)

您可以找到有关此API here的更多详细信息。

答案 2 :(得分:-1)

我们可以向您显示的任何内容都将在未知时间被禁用,并且由于Kev Needham's plan for the future of Firefox extensions而无法用于webextensions,所以您可以做的就是等到Firefox最终支持webextensions。