Pra*_*kar 3 javascript jquery google-chrome-extension angularjs firefox-addon-webextensions
我正在使用Chrome扩展程序,我想检测用户何时输入URL。我知道:
chrome.tabs.onUpdated.addListener(eventLisenerObj.onUpdated);
Run Code Online (Sandbox Code Playgroud)
但是,只要URL更改(例如,页面自动重新加载或用户单击链接等),它就会被调用。
我希望能够仅通过用户输入URL来确定URL是否已更改。
您可以使用(MDN)事件获取此信息。事件侦听器接收属性(MDN),该属性根据导航的原因将是不同的值(MDN)。您触发的值将完全取决于您想要的内容。对于你的描述,你可能会想(MDN),但也有可能(MDN),(MDN)和/或(MDN)。webNavigation.onCommitted
transitionType
'typed'
'generated'
'keyword'
'keyword_generated'
可能的值列表在Chrome的“ History API”页面上进行了webNavigation
说明(它们在Chrome 页面上列出,但未在此处进行说明)(在MDN:上TransitionType
)(Chrome History API页面上的文字):
"link"
用户通过单击另一页面上的链接进入该页面。"typed"
用户通过在地址栏中输入URL来获得此页面。也用于其他显式导航操作。另请参阅(MDN),它用于用户选择的选项看起来根本不像URL的情况。generated
"auto_bookmark"
用户通过UI中的建议(例如,通过菜单项)进入了此页面。"auto_subframe"
子帧导航。这是在非顶级框架中自动加载的任何内容。例如,如果页面由包含广告的多个框架组成,则这些广告URL具有这种过渡类型。用户甚至可能没有意识到这些页面中的内容是一个单独的框架,因此可能不在乎URL(另请参阅(MDN))。manual_subframe
"manual_subframe"
对于用户明确请求的子帧导航,并在后退/前进列表中生成新的导航条目。显式请求的帧可能比自动加载的帧更重要,因为用户可能会关心请求的帧已加载的事实。"generated"
用户通过输入地址栏并选择一个看起来不像URL的条目来进入此页面。例如,一个匹配项可能具有Google搜索结果页的URL,但对用户而言可能显示为“在Google搜索...”。这些与(MDN)导航不太一样,因为用户没有键入或看到目标URL。另请参阅(MDN)。typed
keyword
"auto_toplevel"
该页面是在命令行中指定的,或者是起始页面。"form_submit"
用户将值填写在表单中并提交。请注意,在某些情况下(例如,当表单使用脚本提交内容时),提交表单不会导致这种过渡类型。"reload"
用户通过单击重新加载按钮或在地址栏中按Enter来重新加载页面。会话还原和“重新打开已关闭”选项卡也使用此过渡类型。"keyword"
该URL是从默认搜索提供程序以外的可替换关键字生成的。另请参阅(MDN)。keyword_generated
"keyword_generated"
对应于为关键字生成的访问。另请参阅(MDN)。keyword
为了区分某些过渡类型,除了这些transitionType
值之外,您还需要查看(MDN)。可能的值是(来自Chrome文档,在MDN上有一些不同的描述):TransitionQualifier
"client_redirect"
页面上的JavaScript或元刷新标签引起的一次或多次重定向在导航期间发生。"server_redirect"
在导航期间,发生了由服务器发送的HTTP标头引起的一次或多次重定向。"forward_back"
用户使用“前进”或“后退”按钮来启动导航。"from_address_bar"
用户从地址栏(也称为多功能框)启动了导航。