2013-11-01 26 views
0

我有一個擴展使用(濫用?)fastFind界面(本質上是查找欄)。具體來說,我使用_find_findAgain函數來實際在給定網頁內搜索給定的詞語。我的擴展需要跟蹤上次執行搜索的,這裏是我如何在Firefox 24及以下做到了:如何在Firefox 25中找到查找欄的最後搜索字符串?

var cachedFindTerm = getBrowser().fastFind.searchString; 

火狐25的,但是,fastFind財產似乎不再爲瀏覽器對象存在。因此,我無法訪問查找欄的搜索字符串。我嘗試以下,但它返回空的,我使用_find_findAgain功能的搜索即使經過:

var findBar = getBrowser().getFindBar(); 
var cachedFindTerm = findBar._findField.value; // This is always blank! 

有沒有更好的方式來獲得在Firefox 25中使用由find欄界面之前的搜索字符串?我確定沒有看到任何明顯的...

+0

無法重現,工作對我來說用'gBrowser.getFindBar()._ findField.value'('gFindBar'是'gBrowser.getFindBar簡寫()',BTW )。請發佈可複製的示例和/或重現步驟。 – nmaier

+0

您是否僅通過查找欄API啓動搜索(即,您沒有通過酒吧GUI本身進行搜索)?我只是簡單地調用'findBar._find(term)'來進行搜索。 –

回答

1

當使用「API」(或更確切地說,私有方法,_前綴的方法,不能以任何方式保證不會隨任何發行版一起更改)時, _findField不會更新。

你必須自己投入新的價值。

線沿線的東西:

gFindBar._find(gFindBar._findField.value = term); 
+0

這工作就像一個魅力!從長遠來看,是否有更好的界面,我應該使用編程方式在頁面內搜索文本?我不想編寫自己的搜索算法,但我不確定Firefox公開提供哪些內容。 –

+0

從執行情況和你想要做的事情來看,我認爲沒有更好的方法,甚至任何官方的,穩定的API。 – nmaier

相關問題