質問

アクリプトで取得するメタデータの値を宣言された独自のヘッダ?などを満たすものがありませんが有望のAPIを除く GM_getValue().このコースを含む特別な名前の構文です。しかし、例えば: GM_getValue("@name").

意欲のあちこちを回避することであ冗長な仕様となります。

まGMメタデータを直接アクセスもあり方の身体のスクリプトそのものです。それは確かに、記憶のどこかでなにも恐ろしく難しい構文解析のための "// @".(する必要があるという私の場合はその値がんの関心は、わが国における @version, る拡張値を読み取り userscripts.org.)

役に立ちましたか?

解決

この答えは出日時: としてのGreasemonkey0.9.16(2012年)をご覧ください ブロックの回答 に関する GM_info


そうです。シンプルな例です:

var metadata=<> 
// ==UserScript==
// @name           Reading metadata
// @namespace      http://www.afunamatata.com/greasemonkey/
// @description    Read in metadata from the header
// @version        0.9
// @include        https://stackoverflow.com/questions/104568/accessing-greasemonkey-metadata-from-within-your-script
// ==/UserScript==
</>.toString();

GM_log(metadata); 

このスレッドのgreasemonkey-ユーザーグループ ます。より強固な実施の近くに見つけることができる。

他のヒント

使用 GM_info オブジェクト, に、Greasemonkeyバージョン0.9.16.

例えば、このスクリプト:

// ==UserScript==
// @name            _GM_info demo
// @namespace       Stack Overflow
// @description     Tell me more about me, me, ME!
// @include         http://stackoverflow.com/questions/*
// @version         8.8
// ==/UserScript==

unsafeWindow.console.clear ();
unsafeWindow.console.log (GM_info);


で出力このオブジェクト:

{
    version:            (new String("0.9.18")),
    scriptWillUpdate:   false,
    script: {
        description:    "Tell me more about me, me, ME!",
        excludes:       [],
        includes:       ["http://stackoverflow.com/questions/*"],
        matches:        [],
        name:           "_GM_info demo",
        namespace:      "Stack Overflow",
        'run-at':       "document-end",
        unwrap:         false,
        version:        "8.8"
    },
    scriptMetaStr:      "// @name            _GM_info demo\r\n// @namespace       Stack Overflow\r\n// @description     Tell me more about me, me, ME!\r\n// @include         http://stackoverflow.com/questions/*\r\n// @version         8.8\r\n"
}

ビアテナの答えが、ここが私の一般化液を利オブジェクトの名前と値のペアを表すメタデータの物件です。なお特定のプロパティが複数の値(@には、@を除く,@、@resource)と私のパーサで捉え方として配列またはの場合には@に資源としての下位オブジェクトの名前と値のペアになっています。

var scriptMetadata = parseMetadata(.toString());

function parseMetadata(headerBlock)
{
    // split up the lines, omitting those not containing "// @"
    function isAGmParm(element) { return /\/\/ @/.test(element); }
    var lines = headerBlock.split(/[\r\n]+/).filter(isAGmParm);
    // initialize the result object with empty arrays for the enumerated properties
    var metadata = { include: [], exclude: [], require: [], resource: {} };
    for each (var line in lines)
    {
        [line, name, value] = line.match(/\/\/ @(\S+)\s*(.*)/);
        if (metadata[name] instanceof Array)
            metadata[name].push(value);
        else if (metadata[name] instanceof Object) {
            [rName, rValue] = value.split(/\s+/); // each resource is named
            metadata[name][rName] = rValue;
        }
        else
            metadata[name] = value;
    }
    return metadata;
}

// example usage
GM_log("version: " + scriptMetadata["version"]);
GM_log("res1: " + scriptMetadata["resource"]["res1"]);

ここでも私のためのイントロダクションです。

編集:追加資源@必要と導入した"Greasemonkey0.8.0.

編集:FF5+互換性を配列に格納します。フィルター()なィレクティブには正規表現を指定

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