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 回答