FirefoxはSearch Pluginをダウンロードできませんでした
-
02-01-2020 - |
質問
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 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&ind=1406730191685&n=14787A74345&st=bar&searchfor={searchTerms}" />
<URL method="get" type="application/x-moz-keywordsearch"
template="http://search.mywebsearch.com/mywebsearch/GGmain.jhtml?&ptb=100000487&ind=1406730191685&n=14787A74345&st=bar&searchfor={searchTerms}" />
<Url method="get" type="application/x-suggestions+json"
template="http://ssmsp.ask.com/query?q={searchTerms}&li=ff&sstype=prefix"/>
<moz:SearchForm>http://search.mywebsearch.com/mywebsearch/GGmain.jhtml</moz:SearchForm>
</OpenSearchDescription>
.
私が見たことから、エラーが無効なXMLファイルを示すべきですが、私の人生のために私はこれに何も見つかりません。私はFirefoxにそれをロードしました。私が見つけたTyposと構文エラーをすべて修正しました(&
の代わりに&
を持ち、ブラウザには微細化して解析しますが、それでも開いた検索検索エンジンとしてロードされません。
FFはローカルホストをサポートしていません。私はここに空白を描いています。
洞察力をありがとう!
解決 3
問題:
NOITIDART 、 dataType
からのダウンロードできませんでした。
秒で、iconURL
でaddEngine
を渡すことはできません。それがすべてのアイコンに本当であるかどうかわからないが、間違いなくPNGまたはdata URI
の両方が失敗しました。
第3のcallback
は、フォームのオブジェクトである必要があります。
callback={
onError : function(err){/**/},
onSuccess : function(err){/**/}
}
.
ではなく、.xml
でなければなりません。
URL
からurl
へのUrl
には関係ありませんが、変更されず、延長されていません。
最後に、テスト時に、browser.search.log
のtrue
にabout:config
が設定されていることを確認してください。
バグレポート 。
[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE)
[nsIURI.host]" nsresult: "0x80004005 (NS_ERROR_FAILURE)"
location: "JS frame :: resource://gre/components/nsSearchService.js ::
SRCH_SVC_confirmAddEngine :: line 1370"
data: no]
.
他のヒント
セキュリティのものです。私はこれまでに打たれました。私がしていたことは、ローカルパス(または覚えていないもの)からオーバーライドと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私はこれを深く見て見つけたそれは非常にわずかなことだった。
-
dataType
のEngineProperties
は、1
であるCi.nsISearchEngine.DATA_XML
である3
である必要があります。ええ、私はあなたのものがOpenSearch XMLファイルであることを知っていますが、そのXMLは使用を使用する。 - XML変更
Ci.nsISearchEngine.TYPE_OPENSEARCH
から<URL
には、小文字RとLに注意してください。奇妙な
とにかくこのアドオンをここにインストールすることができます検索エンジンがインストールされます。 https://github.com/yajd/portabletester/tree/a9ed2432cf4fab4362b71d2c805d97caac2cd237
https://addons.mozilla.org/ ja-us / firefox / addon / github-extension-installer / Repoから直接インストールする
最後に私の理由がわからないが、コールバックはaddEngineの後に電話をかけることは決してないので、それはそれをうまくいっているのかわかりません:(
また、Chromeパスではない場合はセキュリティエラーが正しいかどうかはわかりませんが、それ以外の場合にはいかがですが、ここにはありません。 <Url