質問

Backstory:
firefox for firefox for firefox for firefoxの検索プラグインを動的に生成しようとしています。ユーザー入力値が大きいアドオンの一部として値を入力しました。私はそれを取り巻くフォームやクルフトを含めていません。XMLをインポートしようとしている単純な失敗テストケースに絞り込みました。

コード:
簡体字JS

var browserSearchService = Components
        .classes["@mozilla.org/browser/search-service;1"]
        .getService(Components.interfaces.nsIBrowserSearchService);

var EngineProperties = {
                xml :   'http://localhost/search.xml',
                dataType: 3,
                iconURL : 'http://localhost/logo.png',
                confirm : false,
                callback : function addEngineCallback(){
                    console.log('Jason is the greatest');           
                }
            }

browserSearchService.addEngine( EngineProperties.xml,
                                            EngineProperties.dataType,
                                            EngineProperties.iconURL,
                                            EngineProperties.confirm,
                                            EngineProperties.callback);
.

実際のXML

<?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
                       xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  <ShortName>Jason</ShortName>
  <Description>Powered By Jason</Description>
  <InputEncoding>UTF-8</InputEncoding>
  <Image width="16" height="16" type="image/x-icon">http://localhost/logo.png</Image>

  <URL method="get" type="text/html" template="http://search.mywebsearch.com/mywebsearch/GGmain.jhtml?ptb=100000487&amp;ind=1406730191685&amp;n=14787A74345&amp;st=bar&amp;searchfor={searchTerms}" />
  <URL method="get" type="application/x-moz-keywordsearch" 
    template="http://search.mywebsearch.com/mywebsearch/GGmain.jhtml?&amp;ptb=100000487&amp;ind=1406730191685&amp;n=14787A74345&amp;st=bar&amp;searchfor={searchTerms}" />
  <Url method="get" type="application/x-suggestions+json" 
    template="http://ssmsp.ask.com/query?q={searchTerms}&amp;li=ff&amp;sstype=prefix"/>

  <moz:SearchForm>http://search.mywebsearch.com/mywebsearch/GGmain.jhtml</moz:SearchForm>
</OpenSearchDescription>
.

mycroft project

私が見たことから、エラーが無効なXMLファイルを示すべきですが、私の人生のために私はこれに何も見つかりません。私はFirefoxにそれをロードしました。私が見つけたTyposと構文エラーをすべて修正しました(&の代わりに&amp;を持ち、ブラウザには微細化して解析しますが、それでも開いた検索検索エンジンとしてロードされません。

FFはローカルホストをサポートしていません。私はここに空白を描いています。

洞察力をありがとう!

役に立ちましたか?

他のヒント

セキュリティのものです。私はこれまでに打たれました。私がしていたことは、ローカルパス(または覚えていないもの)からオーバーライドとXBLのXMLファイルをロードしていました。私はそれを理解することができませんでした。

最後にchrome.manifestファイルを作成し、chrome://myaddon/content/myxml.xmlのようなXMLファイルへのパスを作成し、それを処理しました。超イライラする、エラーはさらに説明するべきです、それは私の時間を無駄にしました私はXML構文を修正しようとしていました...

だからコードを変更するよりもマニフェストを作成します。

var EngineProperties = {
                xml :   'chrome://myaddon/content/search.xml',
                dataType: 3,
                iconURL : 'chrome://myaddon/content/logo.png',
                confirm : false,
                callback : function addEngineCallback(){
                    console.log('Jason is the greatest');           
                }
            }
.

Chromeパスでローカルパスを削除する方法に注意してください。

だから、明らかにXMLファイルを正しく機能するためにChromeパスからロードする必要があります。

ネット上でこのことをホストしてそのようにインストールしたい場合は、インストール以外のインストール方法を使用する必要があります(これは、このJavaScriptをHTMLページからExcectecute)を使用する必要があります。これは次のとおりです。 https://developer.mozilla.org/en-us/docs/adding_search_engines_from_web_pages.

window.external.AddSearchProvider('http://localhost/search.xml');
.

しかし、あなたがXPCOMのインストールされているあなたのトピック投稿で行っているようにインストールしたい場合は、Chrome Path

を使用する必要があります。

OK私はこれを深く見て見つけたそれは非常にわずかなことだった。

  1. dataTypeEnginePropertiesは、1であるCi.nsISearchEngine.DATA_XMLである3である必要があります。ええ、私はあなたのものがOpenSearch XMLファイルであることを知っていますが、そのXMLは使用を使用する。
  2. XML変更Ci.nsISearchEngine.TYPE_OPENSEARCHから<URLには、小文字RとLに注意してください。奇妙な
  3. とにかくこのアドオンをここにインストールすることができます検索エンジンがインストールされます。 https://github.com/yajd/portabletester/tree/a9ed2432cf4fab4362b71d2c805d97caac2cd237

    https://addons.mozilla.org/ ja-us / firefox / addon / github-extension-installer / Repoから直接インストールする

    最後に私の理由がわからないが、コールバックはaddEngineの後に電話をかけることは決してないので、それはそれをうまくいっているのかわかりません:(

    また、Chromeパスではない場合はセキュリティエラーが正しいかどうかはわかりませんが、それ以外の場合にはいかがですが、ここにはありません。 <Url

    のようなローカルホストまたはまたはローカルファイルパスを実行できるはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top