阅读:5376回复:4
【已解决】油猴脚本:打开一个同源新标签然后关闭
对某个网站有需求:点击按钮或者打开主页时自动在新标签打开某个同源url(例如网站为www.A.com, 打开www.A.com/B.html),然后关闭这个标签
想写一个油猴脚本完成,但是 1. 在@grant none的情况下,使用let tab = window.open(url),无反应,没有新标签打开 2. 在@grant GM_openInTab的情况下,使用let tab = GM_openInTab(url)可以打开新标签,但是返回tab为null,无法关闭 3. 使用插入<script>方法,提示HierarchyRequestError: Node cannot be inserted at the specified point in the hierarchy,无新标签打开 那么, 这个功能要怎么实现?能否实现? |
|
|
1楼#
发布于:2017-08-27 11:28
1. 可能弹出窗口阻止器拦截了(以及你禁用了通知?),非用户事件绑定则Firefox很容易拦截。网上搜索可找一些文章,有一些方法。比如 http://itindex.net/detail/52877-window.open-%E6%B5%8F%E8%A7%88%E5%99%A8
2. 看 https://wiki.greasespot.net/GM_openInTab ,未定义可能是正常情况/设计预期 如果是自用,可以 about:config 中启用 dom.allow_scripts_to_close_windows,可以关闭非子窗口。 |
|
2楼#
发布于:2017-08-28 17:30
yfdyh000:1. 可能弹出窗口阻止器拦截了(以及你禁用了通知?),非用户事件绑定则Firefox很容易拦截。网上搜索可找一些文章,有一些方法。比如 http://itindex.net/detail/52877-window.open-%E6%B5%8...回到原帖感谢dalao指点!没想到竟然是阻止弹窗这个功能引起的,因为不管是控制台还是浏览器控制台,都没看见任何记录,还以为是web api本身的限制 直接允许script关闭其他tab似乎权限太大了点,不过经测试,在选项>隐私与安全>权限>拦截弹出式窗口里把需要脚本运行的网站A加入运行列表也能够成功打开标签,这样的话就仅限于网站A,比较安全 这个好像和禁用通知无关,因为地址栏左上角没看见和通知相关的图标,印象中如果禁用的话,会出现一个图标,点击可以再次允许 加入弹窗白名单后已经可以实现OP中的需求,唯一的缺点是打开的标签总是前台的,查了下似乎JS并不允许更改标签的前后台打开行为;而油猴内置的GM_openInTab则是后台打开的,因为他返回是null,说不定就是用你连接中a.click()的方法实现的…… |
|
|
3楼#
发布于:2017-08-29 08:17
|
|
4楼#
发布于:2017-08-30 15:22
|
|
|