Greasemonkey: ロヌカルファむルのむンストヌルを蚱可する

䜜成日 2017幎10月12日  Â·  44コメント  Â·  ゜ヌス: greasemonkey/greasemonkey

以前は、[ファむル]> [ .user.jsを開く]を遞択するず、むンストヌルされおいたした。 これたでの4.0では、ファむルを開くだけで䜕も実行されたせん。

党おのコメント44件

おそらくこれ䞀臎パタヌンのドキュメント スキヌムの䞀臎セレクタヌで*を䜿甚するず、httpたたはhttpsにのみグロブしたす。 file://䞀臎するものを远加するこずをお勧めしたす。

それたたは<all_urls>セレクタヌ。

file:///スクリプトを怜出するために䞀臎パタヌンを远加するず、XHRが起動し、そのURLのコンテンツの読み取りに倱敗したす。これは驚くべきこずです。

私はこれを少し調べおきたした。 そしお、私は2぀の結論に達したした。 この問題は、XHRを介した読み取り専甚であっおも、ファむルシステムによるWebExtensionsぞのアクセスを犁止するこずに関係しおいる可胜性がありたすこれに関する゜ヌスは盎接ありたせん。線集ここの䞀番䞋にありたす。 たたは、同䞀生成元ポリシヌに関連しおいる可胜性がありたす。

Gecko 1.9以降、ファむルは他の特定のファむルのみを読み取るこずができたす。 具䜓的には、元のファむルの芪ディレクトリがタヌゲットファむルの祖先ディレクトリである堎合にのみ、ファむルは別のファむルを読み取るこずができたす。

file://プロトコルを䜿甚しおマニフェストで定矩されたパスにファむルシステムがアクセスできるようにするには、バグレポヌトを提出する䟡倀があるかもしれたせん。

ええ、それはおそらく「ファむルなし」のルヌルです。 それに぀いおの公匏のガむダンスをどこで入手できるかわかりたせんが、私がそれに぀いお考えるず、今ではそれが真実であるこずを私は知っおいたす。 新しいファむルを䜜成するためのダりンロヌドAPIのような非垞に特別な䟋倖のみが発生したす。

ドラッグアンドドロップを盎接凊理したり、LOL既に開いおいるタブのコンテンツを読み取ったりするような回避策を考え出すこずができたす。 ただし、盞察的なアむコン/リ゜ヌス/芁件の取埗に倱敗するため、さらに回避策がなければ、それでも実行されたせん。

むンストヌルペヌゞに移動する前に、 storage.localを䜿甚しお、URLをキヌずしお䜿甚しおコンテンツをキャッシュできたせんか すでに倉数にコンテンツがありたす。 もちろん、むンストヌルされた/明らかにむンストヌルされおいない堎合は、キャッシュをクリアする必芁がありたす。 WebExtensionsに䜕らかの䞀時ストレヌゞがあり、手動で削陀を凊理する必芁がない堎合は、より䟿利です。

私は私が蚀ったこずをいじり回しおきたした、そしおそれは私が思ったほど簡単ではありたせん。 たず、どのナヌザヌスクリプトもbrowser.storage.localアクセスできるため、Greasemonkeyなどのアドオンにずっお本質的に安党でないストレヌゞです。 次に、メッセヌゞを介しおコンテンツをバックグラりンドスクリプトに送信する堎合も同様です。 メッセヌゞがscript-detect.jsからのみ送信されるように、それを保護する方法がよくわかりたせん。 たた、スクリプトの非同期性のため、 script-detect.jsがナヌザヌスクリプトの前に実行されるかどうかは完党にはわかりたせんこれに぀いおいく぀かのテストを行いたす。

そしおもちろん、私が間違っおいない限り、バックグラりンドスクリプトはどのナビゲヌションリスナヌでもDOM /コンテンツぞの参照を受け取りたせんか

['*://*/*.user.js']䞀臎するonBeforeRequestを䜿甚しおペヌゞのコンテンツを取埗し、 StreamFilterを䜜成できるこずがブランチでこれをテストするコヌドを実装したしたが、䜕も修正しないため、珟時点ではプルリク゚ストはありたせん。 ただし、以前の投皿で取り䞊げたセキュリティ䞊の懞念は回避されたす。

残念ながら、それは議論されたファむルの問題を解決したせん。 その䞊のいく぀かのbugzillaチケット
https://bugzilla.mozilla.org/show_bug.cgi?id=1341341
https://bugzilla.mozilla.org/show_bug.cgi?id=1266960

私は2671からここに向けられたした

このスレッドがロヌカルファむルからのむンポヌトに関するものである堎合....その埌..。
XHRを䜿甚しおロヌカルファむルを読み取るのはなぜですか それは、起源ず蚱可に関しおあらゆる皮類の耇雑さを匕き起こしたす。
簡単な方法は、 input type="file"結果からnew FileReader()を䜿甚するこずです。

このスレッドがfile:///.....user.js URLをスクリプトずしお認識しおむンストヌルするこずに関するものである堎合、それは別の問題であり、別の解決策です。

簡単な方法は、input type = "file"の結果から新しいFileReaderを䜿甚するこずです。

ああ、これはうたくいくかもしれたせん。 file://パスに移動し、拡匵機胜にすべおを実行させるほど優雅ではありたせんが、機胜する可胜性がありたす。 ワヌクフロヌの倧郚分は同じたたである可​​胜性がありたす。

import script -> script selected -> contents cached in backend -> install dialog prompt -> retrieve content from backend -> continue install as usual

たた、ナビゲヌションワヌクフロヌを維持しようずしたずきに䜿甚しようずしおいた方法よりもはるかに安党です。

「inputtype = "file"」を䜿甚しお、動䜜するWeb拡匵の䟋を芋぀けたした。 キャッシュする必芁はないようです。盎接むンポヌトできたす。
https://github.com/mdn/webextensions-examples/pull/171/files/6c066cfff4e8c662984f704cb17c8b39211ed062#diff -098de1750b345156f3cfd46f8199aa34

キャッシュする必芁がないようで、盎接むンポヌトできたす

キャッシュが_必芁_であるずいうこずではなく、むしろ安党察策です。 .user.jsに移動するずきず同じように、スクリプトに関する情報を瀺すダむアログがポップアップ衚瀺されたす。 むンポヌトするずきも同じこずが起こるず思いたす。 したがっお、通垞のデヌタベヌス以倖の堎所にスクリプトの内容を保存する必芁がありたす。これにより、ナヌザヌがむンストヌルボタンをクリックしおも、スクリプトの内容を匕き続き䜿甚でき、ナヌザヌに再床プロンプトを衚瀺する必芁がありたせん。

これがストレヌゞAPIを䜿甚しおキャッシュされるか、どこかのグロヌバルオブゞェクトにキャッシュされるかは、ワヌクフロヌにずっお特に重芁ではありたせん。

たた、むンポヌト機胜は、移行の問題を抱えおいる人々に圹立぀ため、最優先事項[1]になるはずです。 3.xからファむルをむンポヌトするだけです。

[1] @arantiusがプロセスがどのように機胜するかに぀いおいく぀かのアむデアを持っおいるかどうか、

䟋が必芁な堎合は、いく぀かのアドオンにimport./Exportがありたす。

むンポヌトはナヌザヌが開始するため、特別な泚意/ポップアップ/通知/譊告は必芁ありたせん。

ダむアログの1぀にむンポヌトボタンファむル入力を远加したす
ナヌザヌがそれをクリックするず、ファむルピッカヌが開きたす。ナヌザヌは必芁なファむルを遞択し、[開く]をクリックしたすすべおの組み蟌みHTTML5
ファむルが読み取られ、解析されたす
USERスクリプトに準拠しおいる堎合は、IDBに远加されたす。
次に、実行䞭のリスナヌを曎新したす

以䞊です。

むンポヌト/゚クスポヌト蚭定、テヌマデヌタ最倧500kb、およびむンポヌト/゚クスポヌト機胜を備えたアドオンの他の倚くの機胜でも同じこずを行いたす。

たた、むンポヌト機胜を最優先すべきだず蚀いたい[1]。

確かに....これにより、スクリプト䜜成者は新しいスクリプトを蚘述し、むンポヌトしお実行たたはテストできたす。GM3-> 4アップグレヌドの堎合は、芋逃したスクリプトを远加しおください。

コヌドず関数は非垞に単玔です... 1時間で実行できる数行のコヌド。
必芁に応じお、私のコヌドをベヌスずしお䜿甚できたす。

...むンポヌトはナヌザヌが開始するため、特別な泚意/ポップアップ/通知/譊告は必芁ありたせん。 ... USERスクリプトに準拠しおいる堎合は、IDBに远加されたす

しかし、これに぀いおはよくわかりたせん。 暙準のむンストヌルダむアログをスキップするのは特に奜きではありたせん。 おそらく@arantiusは、圌がアドオンで䜕を芋たいかに぀いおの掞察を䞎えるこずができたす。

しかし、これに぀いおはよくわかりたせん。 暙準のむンストヌルダむアログをスキップするのは特に奜きではありたせん。

暙準のダむアログは、ナヌザヌがリモヌト゜ヌスからのナヌザヌスクリプトに盎面したずきに䜿甚されたす。 次に、確認ダむアログが必芁です。

ナヌザヌがむンポヌトを開始した堎合

  • ナヌザヌがスクリプトをむンポヌトするこずにしたした
  • ナヌザヌがむンポヌトボタンをクリックする
  • ナヌザヌは、ナヌザヌが遞択したスクリプトに移動したす
  • 「本圓にこのスクリプトをむンストヌルしたすか」ずいうダむアログでナヌザヌにもう䞀床尋ねる必芁がありたすか :)
    それは迷惑なようです。 ただし、゚ラヌが発生した堎合の譊告が必芁です。
  • ナヌザヌは、ナヌザヌが遞択したスクリプトに移動したす

しかし、これはその方法ではありたせん...むンストヌルはコヌルバック* .user.jsでトリガヌによっお行われたす...

しかし、これはその方法ではありたせん...むンストヌルはコヌルバック* .user.jsでトリガヌによっお行われたす...

珟圚、はい。 ただし、ロヌカルファむルのむンポヌトボタンを远加するこずは可胜です。 たた、 file://ナビゲヌションにむンストヌルしないでください。

ああ、わかりたした、ロヌカルファむルの堎合、それは非垞に適切です。 リモヌトファむル甚ではありたせん ;-)

しかし、これはその方法ではありたせん...むンストヌルはコヌルバック* .user.jsでトリガヌによっお行われたす...

前述のように、ファむル入力を䜿甚した手動むンポヌトに぀いお説明しおいたす

よし、分った。 ロヌカルファむルの堎合は問題ありたせん䞊蚘を参照...

.user.jsをGreasemonkeyりィンドりにドラッグアンドドロップしお、スクリプトのコヌドをロヌドするこずは可胜だず思いたすか
これは間違いなくFirefox自䜓で機胜するので぀たり、imgurのようにファむルをWebサむトにアップロヌドしたり、ドロップしおメガアップロヌドしたりできたす

ロヌカルGMスクリプトをむンポヌトできる方法䞍噚甚でドラッグアンドドロップではない方法でもはありたすか

スクリプトを最終的に配眮する必芁があるのは、正確にどの「キャッシュ」ディレクトリですか。 Firefoxプロファむルでいく぀かの「キャッシュ」ファむルを芋぀けたした

.user.jsをGreasemonkeyりィンドりにドラッグアンドドロップしお、スクリプトのコヌドをロヌドするこずは可胜だず思いたすか

他のドロップボックスず同様に、それは可胜です䟋に぀いおは私のIMGoolgeをチェックしおください。 ただし、远加のリスナヌやプロセスを必芁ずせずに、単玔なファむル入力が最も簡単な方法です。

Mozillaはドキュメントを曎新したした䞊蚘の䟋の芁玄
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Working_with_files

  1. ファむルピッカヌを䜿甚しお拡匵子のファむルを開く
  2. ドラッグアンドドロップを䜿甚しお拡匵子のファむルを開く

これを実装するず、GM3ず同じ動䜜になりたす。

それで、適切なオンラむンフォヌムで提䟛されおいないスクリプトを手動でむンストヌルするための可胜な提案はありたすか

@Samizdata珟圚最も簡単な方法は、GMベヌタ版https://addons.mozilla.org/en-US/firefox/addon/greasemonkey/versions/betaを入手し、モンキヌメニュヌを開いお->新しいスクリプトを䜜成するこずです。

ロヌカルファむルを@requireするスクリプトがある堎合、それは難しい方法でしか実行できたせん。 たずえば、Proxomitronhttp://www.proxomitron.info/files/を取埗しお実行し、プロキシ127.0.0.1:8080を䜿甚するようにFFを構成し、ファむルをProxomitron HTMLフォルダヌに配眮しおから、FF内で「 http //bweb..local.ptron/YOURFILE.user.js "。

@kekkc 、リモヌトリ゜ヌスの問題が修正された新しいバヌゞョンがAMOにプッシュされたず思いたす。

也杯。 これで完了です、

@kekkc 、リモヌトリ゜ヌスの問題が修正された新しいバヌゞョンがAMOにプッシュされたず思いたす。
ただ..私が芋る限り

@ Sxderp 2707を参照しおいたすか

@Eselce 、はい。 これにより、[新しいスクリプト]ボタンを䜿甚しお新しいスクリプトを䜜成し、そのスクリプトに@requireタグを適甚するずきに発生する問題を解決する必芁がありたす。

.user.jsたたは必芁なスクリプトをロヌカルで提䟛するには、さたざたな可胜性がありたす。 ただし、最も簡単な方法は、コマンドラむンでこのPythonワンラむナヌを䜿甚するこずです。

  • Python 2.xの堎合
    python -m SimpleHTTPServer

  • Python 3.xの堎合
    python -m http.server

... http://127.0.0.1:8000/で、実行したディレクトリ内のすべおのファむルの提䟛をすぐに開始したす

_8000がデフォルトのポヌトであるこずに泚意しおください。倉曎できたす。以䞋を参照しおください_

これが、ロヌカルの.user.jsを配眮し、ロヌカルのhttpサヌバヌにファむルを芁求する方法です。 私はこれをGreasemonkeyだけでなく、Tampermonkeyに察しおも行いたす。

PythonはデフォルトでLinuxずMacOにむンストヌルされたす。 Windowsを䜿甚しおいお、Windowsをむンストヌルしおおらず、開発者ず呌ばれ続けるこずを蚈画しおいる堎合は、... _真剣に あなたの䜕が問題になっおいたすか_あなたはあなたが気づき始めるこずができるよりはるかに深刻な問題を抱えおいたす ガヌデニング苗たたはコンピュヌタヌではなく趣味ずしお線み物をするこずをお勧めしたすりィンク_ちょっず、冗談です_

奇劙なプログラムをむンストヌルする必芁はありたせん-あなたは_できたす_は_絶察に䞍芁_です。 Pythonは「アプリ」ではなく、基本的なプログラミング蚀語です。 ただし、この゜リュヌションではPythonを「話す」必芁さえないので、ただ線み物ツヌルをやめたり、急いで行ったりしないでください。

簡単な手順

  1. cdを.user.jsを含むディレクトリに入れたり、ファむルを芁求したりしたす。 たずえば、 requiredFile1.jsずrequiredFile2.jsず蚀いたす

  2. そのディレクトリからPython 2.xの堎合、

python -m SimpleHTTPServer

たたはPhython 3.xの堎合、実行したす

python -m http.server

  1. @require行が次のようになっおいるこずを確認しおください。
// <strong i="42">@require</strong>  http://127.0.0.1:8000/requiredFile1.js
// <strong i="43">@require</strong>  http://127.0.0.1:8000/requiredFile2.js

...ここで、 requiredFile1.jsずrequiredFile2.jsは、提䟛する必芁のあるロヌカルファむルです。

  1. あなたのgreasmonkeyスクリプトが起動するず、Pythonによっお提䟛されおいるrequiresを正しく取埗したす。

終わり。

ロヌカルサヌバヌを閉じるには、pythonコマンドを実行するコン゜ヌルに移動し、 <Ctrl><C>を抌したす。

たた、-_-そしおこれがあなたにずっおばかげお明癜であるこずを願っおいたす_--、GreasemonkeyたたはTampermonkeyがファむルを芋぀けるこずができるず期埅する前にPythonHTTPサヌバヌコマンドラむンを実行するこずを忘れないでください...

ヒントデフォルトの8000以倖のポヌトを䜿甚する堎合は、次のように、コマンドに目的の番号有効なポヌト番号を入力するだけです。

  • Python 2.xの堎合
    python -m SimpleHTTPServer 12345

  • Python 3.xの堎合
    python -m http.server 12345

...そしお圓然、 @require URLを8000ではなくその番号で曎新したす。

わかりたした。GMツヌルバヌアむコンをクリックしお、[新しいナヌザヌスクリプト...]を遞択するずしたす。

新しい察応するタブには、「名前のないスクリプト821696」ずいう名前が自動的に付けられたす。

次に、ロヌカルファむルのGMコヌドからタブペむンに貌り付け、巊䞊の「保存」アむコンをクリックしたす。

このスクリプトは埌でどこにありたすか 読む埌でこのスクリプトを線集するにはどうすればよいですか

スクリプトの名前を「foobar」などに倉曎するにはどうすればよいですか

@bsto Nameは、スクリプト@nameから取埗されたす。
すべおの新しいスクリプトは、「新しいナヌザヌスクリプト...」の䞊に衚瀺されたす。
スクリプトのタむトルをクリックしお削陀たたは線集するには、サブメニュヌがありたす。

はい、ありがずうございたす。

ちょうど別の質問

11月25日、ナヌザヌkekkcは、圌の投皿䞊蚘を参照で、MozillaがWinExplorerからファむルをドラッグアンドドロップする方法を提䟛したず語っおいたす。

したがっお、ナヌザヌファむルのドラッグアンドドロップが可胜になりたす。

私は正しいですか

GMに実装されるのはい぀ですか* .user.jsファむルのドラッグアンドドロップで利甚可胜

FWIW file://.../anything.user.jsぞのナビゲヌションを怜出し、動䜜させるこずができるあらゆる皮類のファむルブラりザでUIを開くこずができるペヌゞアクションを添付できる/すべきだず思いたす。

ナビゲヌションむベントを怜出するこずはできたすが、コンテンツを取埗するこずはできたせんおそらくコンテンツスクリプト内

ファむルブラりザを開くためだけにfile://に移動するのはばかげおいるず思いたすがファむルピッカヌ入力以倖のこずはできないず思いたす。

ファむルブラりザを開くためだけにfile//に移動するのはばかげおいるず思いたすがファむルピッカヌ入力以倖のこずはできないず思いたす。

はい、正確に蚀えば、私たちは身動きが取れたせん。 しかし、私たちは意図を怜出し、限られた環境の䞭で可胜な限り圹立぀こずができたす。

私の2セント..。

FWIW file//.../anything.user.jsぞのナビゲヌションを怜出できる/怜出する必芁があるず思い
ナビゲヌションむベントを怜出するこずはできたすが、コンテンツを取埗するこずはできたせんおそらくコンテンツスクリプト内

Sxderpが述べたように、それは可胜ですが、少し厄介です...

  • リスナヌを远加したすずにかくコンテンツが必芁になるため、 tabs.onUpdated.addListenerように
  • スクリプトを衚瀺しおペヌゞをロヌドしたす
  • コンテンツスクリプトを挿入しおペヌゞコンテンツを取埗し、bgスクリプトに枡したす
  • ペヌゞ/タブを閉じる

別 ....

  • ナビゲヌションリスナヌを远加する
  • ペヌゞの読み蟌みを停止し、むンポヌトオプションを䜿甚するための通知を衚瀺したす...たたは....ナヌザヌがファむルピッカヌを起動するためにクリックする必芁があるむンポヌトオプションを瀺すポップアップ

個人的には、私ならリスナヌを远加せず、browserActionポップアップにIMPORTオプションを远加するだけです。

さらに、私はずにかくGM4以来.user.js圢匏を䜿甚しおいたせん、そしお私はそれが取り残される可胜性があるず思いたす。 ;

個人的には、それが私なら、リスナヌを远加せず、単に..

これが私が意味したこずです。 ただし、UIをコンテンツペヌゞに挿入する堎合がありたす。 GMが無効になっおいるずきにスクリプトに移動するず、以前は情報バヌが衚瀺されおいたした。 そういうこず。

さらに、私はずにかくGM4以来.user.js圢匏を䜿甚しおいたせん、そしお私はそれが取り残される可胜性があるず思いたす。 ;

これは䜕を意味するのでしょうか

これは䜕を意味するのでしょうか

GM3では、スクリプトをGMスクリプトずしお認識できるように、スクリプトにabc.user.jsずいう名前を付ける必芁がありたした。

GM4では、スクリプトはIndexedDBに保存され、スクリプト名は@nameから取埗されるため、実際には重芁ではありたせん。 したがっお、スクリプトをコンピュヌタヌ䞊で abc.js  .userなしずしお䜜成および保存し、GMにコピヌしお貌り付けおいたす。

手動のむンポヌトは、 .user呜名圢匏に瞛られる必芁はないず思いたす。

これに぀いお䜕か進展はありたすか

FireMonkey拡匵機胜はこれを行うこずができたす

https://addons.mozilla.org/en-US/firefox/addon/firemonkey/

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