1

いくつかの環境で異なるURL(つまり、dev.mysite.com、qa.mysite.com、uat.mysite.comなど)で実行されているサイトあります
各環境にはGreasemonkeyスクリプト(myGM.user.js)がありますが、そのバージョンは異なる可能性があり、環境によっては、データを取得するために異なるWebサービスを呼び出す必要があります。

ユーザースクリプトで、そのユーザースクリプトが最初にインストールされたURLを取得したいので、ホストを抽出して、WebサービスURLのプレフィックスとして使用できます。

たとえば、スクリプトがからインストールされている場合、スクリプト を取得して 抽出し
    http://dev.mysite.com/myGM.user.js、データ を呼び出し ます。

    http://dev.mysite.com/myGM.user.js

    http://dev.mysite.com/

    http://dev.mysite.com/myWebService/getData

それを達成するための最も簡単な方法は何ですか?ありがとう!

4

2 に答える 2

1

ASPXページ(PHPなど)をと同じフォルダーに追加することになりましたmyGM.user.js。現在のホスト(サーバー側)を判別し、テキストとして出力するだけです。

したがって、応答を参照した場合は
http://dev.mysite.com/getHost.aspx
、応答を参照した
http://dev.mysite.com/
場合は次の
http://uat.mysite.com/getHost.aspx
ようになります。
http://uat.mysite.com/

次に、このリソースディレクティブをmyGM.user.js追加しました。
// @resource rootUrl GetSiteRoot.aspx
このリソースディレクティブは、ユーザースクリプトのインストール元のURLに相対的なURLを取得し、ユーザースクリプト自体と一緒に応答をダウンロードします。

これにより、ユーザースクリプトの本文を呼び出し
GM_getResourceText('rootUrl')
て、環境ごとに変更を加えることなく、スクリプトがインストールされた場所を正確に知ることができます。

PSただし、GM_InfoAPIを追加するための機能リクエストを送信します。

于 2012-09-27T21:01:44.397 に答える
0

Greasemonkeyアドオンはスクリプトの元のインストールURLを記録しますが、この情報はGreasemonkeyスクリプトでは利用できません。

GM_infoによって提供されるべきもののようですが、そうではありません。機能リクエストを開いてみてください。

現時点での唯一の回避策は、場所ごとにわずかに異なるバージョンのスクリプトを使用することです。(確かに、これはすでに行っています。)具体的には、スクリプトのメタデータブロックに1行を追加および変更します。次のようにディレクティブ
を使用できます。@downloadURL

// ==UserScript==
// @name        YOUR SCRIPT
// @include     http://YOUR_SERVER.COM/YOUR_PATH/*
// @downloadURL http://qa.mysite.com/myGM.user.js
// ==/UserScript==

または、次のように独自のディレクティブを作成します。

// ==UserScript==
// @name            YOUR SCRIPT
// @include         http://YOUR_SERVER.COM/YOUR_PATH/*
// @myInstallLocale http://dev.mysite.com/myGM.user.js
// ==/UserScript==


スクリプトは次のように場所を読み取ります。

var dwnloadURL   = "";
var dwnldURLMtch = GM_info.scriptMetaStr.match (/\n\s*\/\/\s+@downloadURL\s+(.+?)\s*\n/i);
if (dwnldURLMtch  &&  dwnldURLMtch.length) {
    dwnloadURL   = dwnldURLMtch[1];
}
console.log (dwnloadURL);
于 2012-09-27T04:11:05.037 に答える