-2

私はグーグルを調べて、ここでやろうとしていることのアプローチを見つけましたが、今は立ち往生しています。onclick 関数の値を取得するために jQuery を使用していますが、Info 関数からの内部コードが必要です。

$('a.turqheadlabel') から取得したものは次のとおりです。

[<a href=​"#" onclick=​"Info('another-ending')​" class=​"TurqHeadLabel">​ANOTHER ENDING ​&lt;/a>​,
<a href=​"#" onclick=​"Info('good-ending')​" class=​"TurqHeadLabel">​GOOD ENDING ​&lt;/a>​ ]

$('a.turqheadlabel').attr('onclick') を使用したところ、次のようになりました。

function onclick(event) {
    Info('another-ending')
}

私が見ているのは、別のエンディングとグッドエンディングを取得して、呼び出す必要がある配列にそれらを配置できるようにすることです。

PS。クロムが来年それをブロックするので、evalの使用を避ける方法がある場合は望ましいです。

4

1 に答える 1

1

あなたが管理するウェブサイトで

Info'good-ending'および'another-ending')に渡す値にアクセスする場合は、HTMLデータ属性を使用し、 jQueryのdata関数を使用して値にアクセスすることをお勧めします。

HTMLを次のように書き直した場合:

<a href='#' class='TurqHeadLabel' data-info='some-ending'>SOME ENDING</a>

次に、onclickハンドラーを動的に追加infoし、他の場所の値に簡単にアクセスすることもできます。onclickこれにより、DOMの準備ができたときにハンドラーがアタッチされます。

jQuery(function ($) {
    $('a.TurqHeadLabel').click(function () {
        Info($(this).data('info'));
    });
});

JavaScriptの他の場所では、次のdata-infoようなものを使用していつでも属性にアクセスできます。

myLink.data('info');

Chrome拡張機能の場合

Info関数を一時的に、渡された値をキャプチャするものに置き換えることができます。

function getInfoParam(func) {
    var originalInfo, result;

    originalInfo = window.Info;
    window.Info = function (arg) {
        result = arg;
    }
    func();
    window.Info = originalInfo;

    return result;
}

または、正規表現を使用して引用符で囲まれた文字列を検索することもできます。

function getInfoParam(func) {
    var match;
    match = func.toString().match(/"([^"]*)"/);
    if (match) {
        return match[1];
    }
}

この実装には制限があります。エスケープされた引用符を含む文字列(例"foo\"bar")、または一重引用符で区切られた文字列(例)では機能しません'foobar'

何をするにしても、ホストWebサイトの変更に対して脆弱であるため、多少脆弱になります。

于 2012-09-02T18:40:10.237 に答える