3

ユーザーがロードするすべてのページで起動する必要がある拡張機能があります。ディスパッチ ブロックでドメイン「.*」を使用してこれを達成しようとしました。これは firefox と chrome ではうまく機能しますが、IE はこれをまったく尊重しません。

これは既知の問題ですか、それともドメイン ".*" に対する回避策はありますか? 残念ながら、拡張機能を起動したいすべてのドメインをリストできないという特殊な状況にあります。

4

1 に答える 1

4

自分の質問に対する答えを見つけたようです。

Kynetx IE バージョンはそのままではこれをサポートしていないようです。現在、c# 関数を使用しています。

if (document.domain.EndsWith(domain))
{
    plantTags = true;
    break;
}

plantTags は、ページに拡張コードを配置するかどうかを示すために使用されるフラグです。EndsWith は、現在の文字列 (document.domain) が渡されたもので終わっているかどうかを確認します。これを知っていれば、ドメイン「.com」ドメイン「.net」などを入れることができ、すべてのページで動作するはずですが、これはテストしていません.

代わりに、BHO/BHO.cs ファイルの 6 行目にこれを追加して正規表現を使用しました。

using System.Text.RegularExpressions;

次に、182 ~ 190 行を次のように変更します。

foreach (String domain in domainlist)
{
    //reportMessage("onDocComplete", "Matching " + domain + " to doc domain " + document.domain);
    if (document.domain.EndsWith(domain))
    {
        plantTags = true;
        break;
    }
}

に:

foreach (String domain in domainlist)
{
    Regex objDomainPattern = new Regex(domain);
    //reportMessage("onDocComplete", "Matching " + domain + " to doc domain " + document.domain);
    if (objDomainPattern.IsMatch(document.domain))
    {
        plantTags = true;
        break;
    }
}

そこから、拡張コードを再コンパイルする必要がありました (これを行う方法については、ダウンロードしたソースに説明書が含まれています)。私の IE 拡張機能は、ドメイン ブロックからの正規表現に基づいて一致を行うようになりました。これがいつか他の誰かを助けることを願っています!

于 2011-04-07T20:49:36.970 に答える