vimium-c icon indicating copy to clipboard operation
vimium-c copied to clipboard

抱歉,无法在当前网页上执行JS脚本

Open wuqzh8 opened this issue 1 year ago • 6 comments

What command or commands

map yY runKey keys="yankmdlink+tip1"      # 复制标题为markdown格式
map <v-yankmdlink> openUrl url="javascript:navigator.clipboard.writeText(\"[\"+document.title+\"](\"+window.location.href+\")\");"
map <v-tip1> showTip text="已复制url为markdown格式标题"

问题描述 在很多页面上述命令都可以正常执行 在google github 页面会右下角报错"抱歉,无法在当前网页上执行JS脚本" image

Browser and OS

Google Chrome | 127.0.6533.100 (正式版本) (64 位) (cohort: Stable Installs & Version Pins) 修订版本 | 191cc1af405dffccb2a183efdcf0a370625f9b92-refs/branch-heads/6533@{#1911} 操作系统 | Windows 11 Version 23H2 (Build 22631.3958) JavaScript | V8 12.7.224.18 用户代理 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36

Vimium C version 版本 2.11.3

wuqzh8 avatar Aug 08 '24 17:08 wuqzh8

这个是 chrome 限制了,凡是设置了 CSP 的网站都可以阻止 vimium c 执行自定义脚本,几乎绕不过去。

不过单就你这个需求,可以用现成命令:

map yY copyWindowInfo type="tab" format="[${title}](${url})"

就是没有转义机制,不如自定义 js 来得完善

gdh1995 avatar Aug 08 '24 20:08 gdh1995

好的,多谢解答!

wuqzh8 avatar Aug 08 '24 21:08 wuqzh8

等我有空了想想办法,大概这两周内发下一版来尝试解决。思路有了但是代价挺大的。

gdh1995 avatar Aug 13 '24 15:08 gdh1995

我也遇到了这个问题,可以给script加上nonce属性可以绕过一些网站(比如Google),改造成本比较低

这样可以获取网页中脚本的nonce

document.querySelector("script").nonce

但对于特别严格的网站还是不行(比如GitHub)

ttttmr avatar Sep 22 '24 16:09 ttttmr

@ttttmr 抱歉我不懂 nonce,只是看名字的话 nonce 是每个 <script> 都不一样的吧?那我怎么算它呢?算出来的好像还得放进 http header 里?

gdh1995 avatar Oct 19 '24 12:10 gdh1995

至于统一的办法,只能说思路有了,但是我最近几个月太忙了,没时间搞 vimium c……

gdh1995 avatar Oct 19 '24 12:10 gdh1995