我们有一个扩展需要在用户加载的每个页面上触发。我们已尝试在调度块中使用域“.*”来完成此操作。虽然这在 Firefox 和 chrome 中效果很好,但 IE 根本不尊重这一点。
这是一个已知问题还是对域“.*”有任何解决方法?不幸的是,我们处于一个独特的情况,我们无法列出我们想要触发扩展的所有域。
我们有一个扩展需要在用户加载的每个页面上触发。我们已尝试在调度块中使用域“.*”来完成此操作。虽然这在 Firefox 和 chrome 中效果很好,但 IE 根本不尊重这一点。
这是一个已知问题还是对域“.*”有任何解决方法?不幸的是,我们处于一个独特的情况,我们无法列出我们想要触发扩展的所有域。
看起来我找到了自己问题的答案。
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 扩展现在将根据域块中的正则表达式进行匹配。希望有一天这可以帮助其他人!