Greasemonkey: WebExtensionの互換性

䜜成日 2015幎09月16日  Â·  36コメント  Â·  ゜ヌス: greasemonkey/greasemonkey

来幎はWebExtensionsが登堎し、XUL / XPCOMは最終的に非掚奚になるため、䜎レベルAPIの䜿甚を必芁な堎所に制限するための䜜業を行うずよいでしょう。

次の手順が圹立぀ず思いたす。

  • HTMLを䜿甚しおgreasemonkeyポップアップりィンドりをタブに倉換する
  • スタヌトアップをXULオヌバヌレむではなくブヌトストラップ/リスタヌトレス拡匵に倉曎する
  • 次に、珟圚のJSMを呌び出すだけのSDKmain.jsに倉曎したす。 currnetコヌドの呚りの薄いシェルず同じように、jpmをビルドずテストに䜿甚できたす
  • 有甚な堎合はSDKモゞュヌルを䜿甚したすツヌルバヌボタンなど。 JSMはSDKモゞュヌルをむンポヌトできたす

ほずんどの䜜業は段階的に行うこずができるず思いたす。

「叀い」APIの衚面がいく぀かの重芁な郚分に瞮小されたら、Mozillaの担圓者にWebExtensionsの代替品を提䟛するように指瀺できたす。

最も参考になるコメント

私はいく぀かの進歩を遂げたした。

https://github.com/arantius/greasemonkey/tree/webbymonkey88d53b4c67b7825858405eb2591f27c8487ce413 

れロから再実装。 チェックアりトし、 about:debugging 、[䞀時アドオンの読み蟌み]を抌しお、ルヌトの堎所から任意のファむルを遞択したす。 ナヌザヌスクリプトをむンストヌルしお、ほずんど実行するこずはできたせん。 絶察に他の機胜はただありたせん。 たあ、猿のメニュヌがありたすが、それは芋た目がOKである以倖は䜕もしない空の停物です。このわずかな機胜セットでさえ、コヌドの呚りにたくさんのTODOが散らばっおいたす。 これがより倚くの機胜ぞの「正しい道」であるかどうかを保蚌するこずはできたせん。

党おのコメント36件

私はこれに぀いおたくさん考えおきたした。 明確な「決定」はありたせんが、いく぀かのポむントがありたす。

  • e10sずの互換性のために移怍するプロセスを完了したした。 私たちが始めたずき、それはずっず倧倉でした。 たずえば、Services.ppmmず.cpmmは優れたショヌトカットであり、最初から信頌できればよかったのですが、私たちが責任を持っお始めたずきには存圚しおいたせんでした。
  • その仕事は長くおずおも苊痛でした、そしお私はそれを効果的に繰り返すこずを楜しみにしおいたせん。
  • e10sのロヌルアりトは、 Firefox 36 2014幎9月珟圚からFirefox 42 珟圚、2015幎9月珟圚、たたは少なくずも9か月に短瞮されたした。
  • 発衚によるず、webextensions-onlyは少なくずも1幎たたは2幎先にありたす。 今から2、3、4幎埌になるのでしょうか
  • これを行う堎合は、きれいな䌑憩を取り、再蚭蚈するのが適切な時期だず思いたす。

    • 私は、圌らが決しお捕たえられない倚くの問題を抱えおいるにもかかわらず、私たちが半頻繁に良いナニットテストをしたいず思っおいたす。

    • ぀いにAndroidサポヌトを远加できたすか

    • 実際に最初から曞き盎す必芁はありたせんが、どのコヌドを保持し、どのコヌドを削陀するかを慎重に怜蚎する必芁がある堎合がありたす。

  • これほど倧きな別のタスクを開始する前に、GreasemonkeyずMozillaのより匷力な関係を確立しおおくこずを本圓に望んでいたす。 私はそれを実珟する方法に぀いおは匱い掚枬しかありたせん。

    • 今日、私たちは事実䞊、webextensionsのようなものに移怍するための拷問テストだず思いたす。 䜕幎にもわたっお、私たちはかなりの数の高床な機胜を構築しおきたした。 蚈画の䞀郚ずしおの双方向のコミュニケヌションは、おそらく倧いに圹立぀でしょう。

デザむンドキュメントから始めるのは玠晎らしいアむデアです。 基本的に、Greasemonkeyはすべお構造化するために、蚈画倖の有機的に成長した方法ではなく、良い方法の蚈画に存圚するため、すべおをリバヌス゚ンゞニアリングする必芁がありたす。

たずえば、Services.ppmmず.cpmmは優れたショヌトカットであり、最初から信頌できればよかったのですが、私たちが責任を持っお始めたずきには存圚しおいたせんでした。

私は確かにただWebExtensionsの䜿甚を提唱しおいたせん、圌らはGMのようなもののために未熟な方法です

実際に最初から曞き盎す必芁はありたせんが、どのコヌドを保持し、どのコヌドを削陀するかを慎重に怜蚎する必芁がある堎合がありたす。

うヌん、たあ、私はそれを䞻にテクノロゞヌの芖点から芋おいたした。 珟圚、UIは共有Chrome環境でXULオヌバヌレむず盎接スクリプト実行を䜿甚しおいたす。

したがっお、物事をHTMLに倉換し、それぞれを独立したりィンドりコンテキストで実行し、メッセヌゞパッシングを介しおのみ通信するこずは、物事が将来行われるこずになっおいる方法のようです。

メッセヌゞマネヌゞャは基本的に、それが実装されおいる最䜎レベルです。 より高いレベルの抜象化はその䞊に構築されたす。 WebChannel.jsm / BroadcasstChannel / MessageChannel / WebExtensionチャネルなど。

デザむンドキュメントから始めるのは玠晎らしいアむデアです。

GH wikiはそのための適切な堎所でしょうか 共同䜜業を簡単にするために、線集時に通知を行いたすか

私たちは䞻に機胜/内郚配管リストずそれぞれをクリヌンな方法で実装する方法が必芁だず思いたす。

この問題のトピックに興味がある堎合は、以䞋をお読みください。

https://groups.google.com/d/topic/greasemonkey-dev/K6IyDUWnTQc/discussion

ありがずう

https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API/Introduction

これは非垞に興味深いAPIですが、「この機胜は非暙準であり、暙準トラックにはありたせん」ず互換性は非垞に制限されおいたす。

フル機胜のGreasemonkey-under-WebExtensionsを蚭蚈する最近の私の詊み2483、2484を参照はすべおむラむラしおいたす。 私は、より進歩的な開発スタむルを怜蚎し始めおいたす。より限定された機胜のセットを遞択し、それだけをサポヌトしたす。 少し䟿利になっおから、埌でより倚くの機胜ぞの道を芋぀けおください。

3.xのむンストヌルを調べるず、私にずっおはすべおのスクリプトが<strong i="6">@grant</strong> noneであるこずがわかりたす。 27のうち、 @run-at document-start䜿甚しおいるのは6぀だけであり、サポヌトされおいない堎合、それらのほずんどは少なくずもある皋床正垞に機胜したす。 @require機胜は頻繁に䜿甚され、 @resourceかなり䜿甚されたす。

したがっお、これは最初に目指すべき適切な目暙のように思われたす。 <strong i="12">@grant</strong> noneモヌドでプレヌンナヌザヌスクリプトをサポヌトし、 GM_ APIはサポヌトしたせん。 @requireサポヌトしたす。 どういうわけか、おそらく非効率的に@resourceをサポヌトしたいず思っおいたす。

私はそれを忘れ続けおいるので泚意しおください゚ラヌを少し読みやすくするためにsourceURLを䜿甚するこずを蚈画しおください。耇数のsourceURLがサポヌトされおいるかどうか、たたは@require考慮しおsourceMapを生成する必芁があるかどうかを調べおくださいできたすか

WebExtensionのものに加えおプレヌンなWebAPIにアクセスできるので、次のようになりたす。

https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API

 WebExtensionのIndexedDBのストレヌゞ制限はどのくらいですか これはstorage.localよりもはるかに優れたオプションのように芋えたす。 むンタヌフェヌスは最も単玔ではありたせんが、スクリプトを盞互に分離し、遞択的な読み取りを行うためのより匷力な機胜を提䟛したす。 私が思うに。 ドキュメントも最も䜿いやすいものではありたせん。

https://github.com/mdn/webextensions-examples/pull/171には、IndexedDBに関する貎重な議論ず䟋があるようです。

私はいく぀かの進歩を遂げたした。

https://github.com/arantius/greasemonkey/tree/webbymonkey88d53b4c67b7825858405eb2591f27c8487ce413 

れロから再実装。 チェックアりトし、 about:debugging 、[䞀時アドオンの読み蟌み]を抌しお、ルヌトの堎所から任意のファむルを遞択したす。 ナヌザヌスクリプトをむンストヌルしお、ほずんど実行するこずはできたせん。 絶察に他の機胜はただありたせん。 たあ、猿のメニュヌがありたすが、それは芋た目がOKである以倖は䜕もしない空の停物です。このわずかな機胜セットでさえ、コヌドの呚りにたくさんのTODOが散らばっおいたす。 これがより倚くの機胜ぞの「正しい道」であるかどうかを保蚌するこずはできたせん。

叀いバヌゞョンのTampermonkeyずViolentmonkeyはオヌプン゜ヌスなので、WebExtensionsはChromium Extensionsに䌌おいるので、そのコヌドの䞀郚をここで䜿甚できたすか
線集実際、それを芋るず、叀いTampermonkeyずのラむセンスの互換性に぀いおはよくわかりたせん。 ただし、ViolentmonkeyはMITラむセンスであるため、互換性がありたす。

@PorygonZRocks ViolentmonkeyがGreasemonkeyになりたすか

私はコヌディングの経隓があたりありたせんが、少なくずも䜕かを実装するためのガむドラむンがあるず思っおいたした。 繰り返したすが、あたり経隓がなく/知識がないので、私は間違っおいるかもしれたせん。

FF56がマルチプロセスず互換性のないすべおのアドオンを無効にしたため、期限を倉曎する必芁がある堎合があるこずに泚意しおください。

私の開発ブランチを参照しおください。 これはかなりラフですが、機胜は最小限です。 これは行われおいるので、この広範囲にわたる問題で特に远跡するものはありたせん。

@arantius奜奇心から、新しいコヌドを曞いおいるのですか、それずも叀いコヌドを再利甚しおいるのですか

䜕か手䌝いたしょうか

たずえば、奜奇心から、「parse-meta-line.js」の目的は単にメタデヌタをオブゞェクトに解析するこずですか

@arantius奜奇心から、新しいコヌドを曞いおいるのですか、それずも叀いコヌドを再利甚しおいるのですか

ほずんど新しい。 い぀/どこで圹立぀かをコピヌしたす。 これたでのずころ、スクリプトの解析は倧きな䟋です。

䜕か手䌝いたしょうか

ヘルプがいいでしょう。 調敎は難しいでしょう。

たずえば、奜奇心から、「parse-meta-line.js」の目的は単にメタデヌタをオブゞェクトに解析するこずですか

その䞀行、はい。

その䞀行、はい。
぀たり、これらの間のメタデヌタを解析する以倖に䜕かを行うのでしょうか。

// ==UserScript==
....
// ==/UserScript==

それが唯䞀の目的である堎合、それは倚くのコヌドのように思えたす。

はい、それはそれがするこずです。 生成されたコヌドです。 このディスカッションをhttps://groups.google.com/d/topic/greasemonkey-devに行っおください。

私はGoogleグルヌプを䜿甚しおいたせん:(
もしそれが私だったら...私はおそらく違うやり方をするでしょう。

グヌグルグルヌプはもう存圚したせん。

悪いリンク https //groups.google.com/forum/#forum / greasemonkey -dev

これが正しい堎所であるかどうかは完党にはわかりたせんが、ずにかくここにありたす。 別の問題@arantiusを開いおほしい堎合は、確かに。
4.0.0は既存のスクリプトを移行するこずになっおいるのではありたせんか アルファ3最新の非ベヌタ版に曎新したしたが、スクリプトがもうないこずに気づきたした。

@ Phyxion 、3.14をむンストヌルする堎合は、スクリプトを移行する必芁がありたす。 むンストヌル埌、必ずブラりザを再起動しおください。

その埌、4.xをむンストヌルするず、スクリプトが䜜成されたす。 そうでない堎合は、新しい号の詳现な耇補手順が圹立ちたす。

Greasemonkey 4alphaはFirefox57ず互換性がありたせん。

@erkinalp 、

@Sxderpええず、私のマシンでそれを再珟するのは簡単です。 3.14を10個のナヌザヌスクリプトずずもにむンストヌルしたした。 AMOに移動し、最新のアルファ版をダりンロヌドしたす。 求められたら再起動したす。 次に、ナヌザヌスクリプトがむンストヌルされおいないこずを瀺したす。 これを再珟するのにどれほど圹立぀かわかりたせん。

私はただこれをテストしおいたせんが、GM4はアンむンストヌル埌に構成を倱うはずです保持するはずなので、詊しおみるこずをお勧めしたす。

  1. Greasemonkeyを完党にアンむンストヌルしたす
  2. Firefoxを再起動したす
  3. Greasemonkey 3.14のむンストヌル再起動を含む
  4. Firefoxを再起動しおください
  5. Greasemonkey 4をむンストヌルしたす䜕でもドット

それは圹に立ちたすか

トップレベルの埅機぀たり、すべおを非同期関数でラップするは、将来の実装を制限するためたずえば、サンドボックスを取り戻す堎合や将来のレルムを取埗する堎合、蚭蚈䞊の遞択ずしおは適切ではないず思いたす。 これにより、トップレベルの埅機が利甚できず、スクリプトがトップレベルで実行されるバニラJSの実行ず矛盟するこずになりたす。

@arantius
ここにはただ䜕もありたせん:(
ずころで、4.0は次のようになっおいるはずです https 
スクリプトを远加するためのボタンなどはありたせん。

...すべおを非同期関数でラップしたす..。

珟圚利甚可胜なものを䜿甚しお、スコヌプの目的で関数をラップする必芁がありたす。 私はそれを非同期にしないためにあなたの理由を買うず思いたす。 少なくずも、スクリプト自䜓に非同期ラッパヌ関数を远加するのは簡単です。

ええ、それは䞻にasync / awaitに関するものでした。これは、珟圚javascriptで

@arantiusなぜ反察祚を投じるのですか

@arantiusは2017幎にコメントしたした28. 14:57 CEST 

...すべおを非同期関数でラップしたす..。

珟圚利甚可胜なものを䜿甚しお、スコヌプの目的で関数をラップする必芁がありたす。 私はそれを非同期にしないためにあなたの理由を買うず思いたす。 少なくずも、スクリプト自䜓に非同期ラッパヌ関数を远加するのは簡単です。

[mozillaプロファむル] \ storage \ default \のコンテンツを削陀しおみおくださいバックアップ埌
その埌、再詊行しおください。

UserScriptオブゞェクトず蚀えば、3぀のUserScriptクラスを持぀ための蚭蚈䞊の決定を完党には理解しおいたせん。 珟時点では、圌らは少しばかげおいる単䞀の継承ツリヌを持っおいたす。

さらに、RemoteUserScriptは1回だけ䜿甚され、そのためにIDを

情報のためだけに..。

私はFF57.0a1を䜿甚しおおり、レガシヌアドオンずGM3.13を実行しおいたす
残念ながら、最倧バヌゞョンが56に蚭定されおいるため、曎新3.14、3.15を取埗できたせん。*

ただし、手動でむンストヌルするこずもできたす。

GM 3.16は、起動時にブラりザをハングさせたすDBを曎新しおいるず思いたす

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡