Firefox 以编程方式使用“查找栏”例程会导致显示“查找栏”

Firefox 以编程方式使用“查找栏”例程会导致显示“查找栏”,firefox,firefox-addon,Firefox,Firefox Addon,更新:似乎是对的修复导致了这种情况。如果知道(a)如何解决这个问题,或者(b)是否有其他方法在给定页面中查找文本,那就太好了 我的一个Firefox扩展以编程方式使用浏览器的查找栏查找网页上的文本。在最新版本的Firefox中,执行“我的加载项”代码会在未找到搜索词时显示“查找”栏,这是它以前没有做过的。我的日常工作如下: // Reuse the find bar mechanisms in Firefox (we get a bunch of stuff for free that way)

更新:似乎是对的修复导致了这种情况。如果知道(a)如何解决这个问题,或者(b)是否有其他方法在给定页面中查找文本,那就太好了

我的一个Firefox扩展以编程方式使用浏览器的查找栏查找网页上的文本。在最新版本的Firefox中,执行“我的加载项”代码会在未找到搜索词时显示“查找”栏,这是它以前没有做过的。我的日常工作如下:

// Reuse the find bar mechanisms in Firefox (we get a bunch of stuff for free that way)
FindInPage: function(term, e) {
    var findBar = document.defaultView.gFindBar;
    var shiftKey = e.shiftKey;
    var findObj;
    var cachedFindTerm;

    if ("_find" in findBar) {
        findObj = {
            find: function(t) {
                findBar._find(findBar._findField.value = t);
            },
            findNext: function() {
                 findBar._findAgain(false);
            },
            findPrevious: function() {
                 findBar._findAgain(true);
            }
        };

        cachedFindTerm = gFindBar._findField.value;
    } else {
        findObj = findBar;
        cachedFindTerm = getBrowser().findString;
    }

    if (cachedFindTerm == term) {
        if(shiftKey)
            findObj.findPrevious();
        else
            findObj.findNext();
    } else {
        findObj.find(term);
        if(shiftKey)
            findObj.findPrevious();
    }
},

是否有某种方法可以防止执行此块时出现查找栏?我知道使用像这样的私有函数不是最佳实践,但是有没有更好的方法在网页中查找给定的单词呢?一些我不知道的可供附加作者使用的搜索API?

您可以使用FindBar.jsm功能,而不必打开它,但我认为您必须实际使用这些内部函数。我没有完全阅读你的问题,但我制作了这个插件,它使用findbar特性-你可以使用findbar.jsm特性,而不必打开它,但我认为你必须实际使用那些内部函数。我没有完全阅读你的问题,但我制作了这个插件,它使用findbar特性-