Firefox 在哪里确定 URL 栏中输入的词要转换为搜索
Where does Firefox determine the words typed in URL bar are to be converted to search
我正在尝试在 Firefox 源代码中找到用户按下回车键后,在 url 栏中输入的词被识别为提供给默认搜索引擎的区域。例如,如果我输入 firefox
,它将拉出搜索结果。我找不到这个逻辑在哪里发生。
我这样追踪,从搜索栏在回车时发出的调用开始,然后更深入地追踪 url 和沿途传递的任何其他 uri。
- gURLBar.handleCommand
- openUILinkIn
- openLinkIn
- gBrowser.loadURIWithFlags
因此修改函数 openLinkIn 以在 loadURIWithFlags
之前执行 console.log 我们看到 url 仍然是到目前为止的搜索词。
- gBrowser.mCurrentBrowser.loadURIWithFlags
- _loadURIWithFlags
- gBrowser.webNavigation.loadURIWithOptions -->
[[native code]
所以我通过注入这些函数进行跟踪,我发现就在它调用本机代码之前,它正在传递一个仍然是搜索词的 uri,这令人难以置信,我当时想(在传递给本机代码之前)代码)它会找出默认的搜索引擎提交 url 然后将其传递给它。我错过了什么吗?
不,我认为您的分析是正确的 - 浏览器实际上使用搜索关键字导航到 URL。然后内容进程发送 Browser:URIFixup message which is received in browser.js again 并触发 gKeywordURIFixup
函数。那就是关键字被解析的地方。是的,在 Mozilla 开始致力于进程分离之前,事情过去要简单得多。
我正在尝试在 Firefox 源代码中找到用户按下回车键后,在 url 栏中输入的词被识别为提供给默认搜索引擎的区域。例如,如果我输入 firefox
,它将拉出搜索结果。我找不到这个逻辑在哪里发生。
我这样追踪,从搜索栏在回车时发出的调用开始,然后更深入地追踪 url 和沿途传递的任何其他 uri。
- gURLBar.handleCommand
- openUILinkIn
- openLinkIn
- gBrowser.loadURIWithFlags
因此修改函数 openLinkIn 以在 loadURIWithFlags
之前执行 console.log 我们看到 url 仍然是到目前为止的搜索词。
- gBrowser.mCurrentBrowser.loadURIWithFlags
- _loadURIWithFlags
- gBrowser.webNavigation.loadURIWithOptions -->
[[native code]
所以我通过注入这些函数进行跟踪,我发现就在它调用本机代码之前,它正在传递一个仍然是搜索词的 uri,这令人难以置信,我当时想(在传递给本机代码之前)代码)它会找出默认的搜索引擎提交 url 然后将其传递给它。我错过了什么吗?
不,我认为您的分析是正确的 - 浏览器实际上使用搜索关键字导航到 URL。然后内容进程发送 Browser:URIFixup message which is received in browser.js again 并触发 gKeywordURIFixup
函数。那就是关键字被解析的地方。是的,在 Mozilla 开始致力于进程分离之前,事情过去要简单得多。