URL访问提示
Prompt on URL visit
我是Javascript和Chrome扩展的新手,我正在开发一个当用户访问某个网页时触发提示的扩展,但当用户访问该网页时不会提示。
下面是重现这个问题的简化版本:
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
if (url === "example.com") {
confirm("You are visiting " + URL);
}
});
我希望这样做是触发提示当用户访问'Example.com',但我认为我误解了Chrome如何从活动选项卡中提取URL,也许事件是如何触发的…
任何提示都很感激。
在你的回答中,你引用了这个问题,但你从一堆答案中选择了一个奇怪的答案。
不要自己检测页面加载,最好依靠Chrome的内容脚本机制,这将确保您的脚本在加载请求网页的每个选项卡中执行。
-
如果您提前知道网页列表,您可以在清单中根据它们进行过滤:
"content_scripts" : [{ "matches": ["*://*.example1.com/*", "*://*.example2.com/"], "js": ["confirm.js"] }],
然后输入confirm.js:
confirm("You are visiting " + location.href);
这将是非常有效的,因为Chrome将为您本地过滤请求
-
如果你事先不知道网页列表,你可以在每个页面上使用一个内容脚本,并在你的代码中过滤它:
"content_scripts" : [{ "matches": ["*://*/*"], "js": ["confirm.js"] }],
和confirm.js (skeleton):
chrome.storage.local.get("hostFilterData", function(data){ if( checkUrl(location.host, data.hostFilterData) ) { confirm("You are visiting " + location.href); } }); function checkUrl(location.host, filterData){ /* your logic goes here */ }
如果你想让JS在尽可能早的时间运行,你可能还想添加"run_at" : "document_start"
。
如果你真的想让你的逻辑在后台页面,你可以听各种事件。由changeInfo.status == 'complete'
过滤的chrome.tabs.onUpdated
应该在大多数情况下工作,但可能并不总是一个好主意。如果页面有加载缓慢的资源,它会很晚才触发,如果页面使用基于锚点的导航(您可能不希望这样),它可能会再次触发。即使采用这种方法,在此之后执行选项卡查询也没有什么意义,因为事件包含触发它的页面的选项卡ID。
还有chrome.webNavigation
API提供相关事件
尝试更改
if(url === "example.com")
如果(url = = = " example.com " | | url = = = " http://example.com " | | url = = = " https://example.com ")
- 访问布局信息是否也会导致浏览器重排
- Javascript,访问一个主要对象模块模式中的每个对象
- 如何访问声音管理器2创建的声音对象
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 提示使用服务器端事件处理程序激活JavaScript
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何访问fastOpt.js
- 如何访问高图表工具提示中的任何特定数据
- 使用 FourSquare API 和 javascript 访问场地提示
- 如何使 Twitter Bootstrap 工具提示可访问
- 如何访问图表.js默认设置?(相关 - 如何打开工具提示?
- URL访问提示
- 是否有可能在标准的JavaScript提示/确认弹出框中删除键盘访问?
- 我的javascript提示脚本不起作用.访问和操作DOM
- 在D3多折线图的工具提示中访问数据
- 我如何使用D3/javascript访问和更改工具提示的连接文本中的变量
- UI 自动化警报提示按钮/文本字段可访问性
- 有没有办法从外部访问 dxChart 的工具提示