插件启用后于 b 站评论区选中文本困难
操作系统:Windows 11 浏览器:ZenBrowser 1.8.2b (基于 Firefox 135.0.1) (64 位) ScriptCat:0.16.6
问题描述: 在浏览器中启用 ScriptCat 插件后,在哔哩哔哩视频网中选中文本时,发现选中困难。 我最初认为是我安装的脚本导致的。但即使关闭加载脚本,依然出现该情况。
我录制了 Gif 来说明情况。正常情况如下:
然后这个是开启插件后的行为(拖动选中时我并未抬起鼠标):
另外,经测试,Tampermonkey 并不会出现这个情况。望修复。
Edge好像没遇到这个问题,是只有ZenBrowser有这个问题么?另外尝试关闭这个开关可以复现么?
Edge好像没遇到这个问题,是只有
ZenBrowser有这个问题么?另外尝试关闭这个开关可以复现么?
我测试时已经关闭了这个开关,所以是的,关闭开关后问题依然存在。 唯一能使其消失的方法是:在插件管理器页面中卸载或禁用插件。
还发现 Firefox 原版(我使用 winget 安装最新 Firefox)也有这个情况,似乎可以认为是 Firefox 系浏览器的通病。
@CodFrm 定位到问题了吗
使用Firefox 125版本没有出现,使用Firefox 136确实复现了上述问题,还没定位到
Firefox 139.0.4依旧存在
经过本编程菜鸟的实践,发现一个临时的解决方法,极大改善情况,提供给同样遇到问题的人。
在你的 userContent.css 加入以下代码:
/* 修复 ScriptCat 启用时于 b 站评论区选中文本异常 */
@-moz-document domain("bilibili.com") {
bili-rich-text {
/* 该项原本值为 inline */
--bili-rich-text-display: block !important;
}
}
@CodFrm 这个起修复作用的css覆写了"bili-rich-text"元素的变量"--bili-rich-text-display",变量原本值为"inline",这是否对定位问题有所帮助?
Windows1124H2+Firefox136(64bit)下使用@Y0ungSea
经过本编程菜鸟的实践,发现一个临时的解决方法,极大改善情况,提供给同样遇到问题的人。
方法不管用(( 已确认userContent.css生效
我也遇到了这种情况,要是不看这个issue的话,我以为是b站的问题。。。
@CodFrm 感覺是 webpack 有問題。
試過改代碼但無效。
把打包後content.js裡的"./src/content.ts"
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _app_logger_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/logger/core */ \"./src/app/logger/core.ts\");\n/* harmony import */ var _app_logger_message_writer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app/logger/message_writer */ \"./src/app/logger/message_writer.ts\");\n/* harmony import */ var _app_message_content__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./app/message/content */ \"./src/app/message/content.ts\");\n/* harmony import */ var _app_message_internal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/message/internal */ \"./src/app/message/internal.ts\");\n/* harmony import */ var _runtime_content_content__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./runtime/content/content */ \"./src/runtime/content/content.ts\");\n/* harmony import */ var _dist_inject_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dist/inject.js */ \"./dist/inject.js\");\n/* harmony import */ var _pkg_utils_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pkg/utils/utils */ \"./src/pkg/utils/utils.ts\");\n\n\n\n\n\n// @ts-ignore\n\n\nconst D392EC6BF3123287 = () => {\n const internalMessage = new _app_message_internal__WEBPACK_IMPORTED_MODULE_3__[\"default\"](\"content\");\n const logger = new _app_logger_core__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n debug: \"development\" === \"development\",\n writer: new _app_logger_message_writer__WEBPACK_IMPORTED_MODULE_1__[\"default\"](internalMessage),\n labels: {\n env: \"content\",\n href: window.location.href\n }\n });\n const scriptFlag = (0,_pkg_utils_utils__WEBPACK_IMPORTED_MODULE_6__.randomString)(8);\n\n // 注入运行框架\n const temp = document.createElementNS(\"http://www.w3.org/1999/xhtml\", \"script\");\n temp.setAttribute(\"type\", \"text/javascript\");\n temp.textContent = \"(function (ScriptFlag) {\\n\".concat(_dist_inject_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], \"\\n})('\").concat(scriptFlag, \"')\");\n temp.className = \"injected-js\";\n document.documentElement.appendChild(temp);\n temp.remove();\n internalMessage.syncSend(\"pageLoad\", null).then(resp => {\n logger.logger().debug(\"content start\");\n // 通过flag与inject建立通讯\n const contentMessage = new _app_message_content__WEBPACK_IMPORTED_MODULE_2__[\"default\"](scriptFlag, true);\n new _runtime_content_content__WEBPACK_IMPORTED_MODULE_4__[\"default\"](contentMessage, internalMessage).start(resp);\n });\n};\nD392EC6BF3123287();\n\n//# sourceURL=webpack://scriptcat/./src/content.ts?");
換成
eval(`__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _app_logger_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./app/logger/core */ "./src/app/logger/core.ts");
/* harmony import */ var _app_logger_message_writer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app/logger/message_writer */ "./src/app/logger/message_writer.ts");
/* harmony import */ var _app_message_content__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./app/message/content */ "./src/app/message/content.ts");
/* harmony import */ var _app_message_internal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./app/message/internal */ "./src/app/message/internal.ts");
/* harmony import */ var _runtime_content_content__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./runtime/content/content */ "./src/runtime/content/content.ts");
/* harmony import */ var _dist_inject_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dist/inject.js */ "./dist/inject.js");
/* harmony import */ var _pkg_utils_utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./pkg/utils/utils */ "./src/pkg/utils/utils.ts");
// @ts-ignore
const D392EC6BF3123287 = () => {
const internalMessage = new _app_message_internal__WEBPACK_IMPORTED_MODULE_3__["default"]("content");
const logger = new _app_logger_core__WEBPACK_IMPORTED_MODULE_0__["default"]({
debug: "development" === "development",
writer: new _app_logger_message_writer__WEBPACK_IMPORTED_MODULE_1__["default"](internalMessage),
labels: {
env: "content",
href: window.location.href
}
});
const scriptFlag = (0,_pkg_utils_utils__WEBPACK_IMPORTED_MODULE_6__.randomString)(8);
// 注入运行框架
const temp = document.createElementNS("http://www.w3.org/1999/xhtml", "script");
temp.setAttribute("type", "text/javascript");
temp.textContent = "(function (ScriptFlag) {\n".concat(_dist_inject_js__WEBPACK_IMPORTED_MODULE_5__["default"], "\n})('").concat(scriptFlag, "')");
temp.className = "injected-js";
document.documentElement.appendChild(temp);
temp.remove();
internalMessage.syncSend("pageLoad", null).then(resp => {
logger.logger().debug("content start");
// 通过flag与inject建立通讯
const contentMessage = new _app_message_content__WEBPACK_IMPORTED_MODULE_2__["default"](scriptFlag, true);
new _runtime_content_content__WEBPACK_IMPORTED_MODULE_4__["default"](contentMessage, internalMessage).start(resp);
});
};
D392EC6BF3123287();
//# sourceURL=webpack://scriptcat/./src/content.ts?`);
就解決了。
也就是說MV2 (0.16.6) 要跟MV3一樣換打包工具吧 rspack或者 vite 應該都行。不會打包出來一堆eval
@cyfung1031 这是怎么更换的
@cyfung1031 这是怎么更换的
上面我看錯了。 MV2版本有沒有開發代碼版?build出來都壓縮了無法debug 現在只能肯定是content.js裡插代碼那一塊 (injectJs)
這個反白問題 v0.9.4 沒事 v0.10.0 問題出現
修正版下载:
https://github.com/cyfung1031/scriptcat/actions/runs/16096691763
all-artifacts 裡面的 scriptcat-v0.16.6-firefox.zip
测试版好像要 about:debugging#/runtime/this-firefox 才能安装
@cyfung1031 MV2的代码在这个分支:release/mv2
在v0.10.0的时候对注入方式进行了大改动,所以可能产生了这个问题
PR 501 提交了。
MV3還有這堆垃圾。不知道是從哪來的。
個人意見,應該減少 injectJs 裡面的東西。 那些東西(包括這些打包垃圾代碼)會全部頁面跑. 不太好
MV2就算了吧。請改走MV3 injectJs裡面的垃圾代碼。應該不需要一萬條代碼在每個頁面注入。 @CodFrm
下圖是MV3
@cyfung1031 我使用这个修复版本,似乎还是存在这个问题
@cyfung1031 我使用这个修复版本,似乎还是存在这个问题
不清楚是不是macOS 跟windows的差異
我用macOS. Firefox 140.0.2 (aarch64)
下戴這個 all-artifacts
https://github.com/scriptscat/scriptcat/actions/runs/16099297243
解壓縮後,找裡面的 scriptcat-v0.16.7-firefox.zip
打開 about:debugging#/runtime/this-firefox 讀這個zip 檔安裝
腳本都能運行
https://github.com/user-attachments/assets/7a705490-40de-4c0c-981f-e0e7e8c75bba
@cyfung1031 我也是mac firefox 140.0.2,奇怪了
https://github.com/user-attachments/assets/12687736-db8c-4f23-add9-300d9bed3ea2
@cyfung1031 我也是mac firefox 140.0.2,奇怪了
iShot_2025-07-06_22.17.15.mp4
看起來是"正常"呀 Bilibili 本身就是這樣 你把滑鼠移到文字上有反白就可以了 移離文字沒反白是正常
1樓第二張圖那個,是滑鼠移動後,反白會斷開,移回去也不會有文字反白
@cyfung1031 没有安装ScriptCat扩展的话,是不会有这个问题,我也不知道怎么导致的,很奇怪
看起來是"正常"呀 Bilibili 本身就是這樣 你把滑鼠移到文字上有反白就可以了 移離文字沒反白是正常
正常来说是不会有视频那样的反白会不断闪烁切换状态的情况的,而是平滑的选中一段文字(就像是在一些文本编辑器里面的选中效果)
看起来是"正常"呀 Bilibili 本身就是这样 你把滑鼠移到文字上有反白就可以了 移离文字没反白是正常
正常来说是不会有视频那样的反白会不断闪烁切换状态的情况的,而是平滑的选中一段文字(就像是在一些文本编辑器里面的选中效果)
https://addons.mozilla.org/zh-cn/android/addon/scriptcat-pre/
安装这个。
你会得到以下结果就是 "正常" 这是B站不相容Firefox的问题
~~@cyfung1031 你可以尝试卸载脚本猫扩展,进行这个操作时是正常的~~
~~我记得当时是确认过卸载扩展就正常了,好奇怪~~
现在的版本没有这个问题了
~~@cyfung1031 @Hwenray 我刚刚在Firefox上,卸载了扩展(并尝试没有安装任何扩展),依旧存在这个问题,好像确实不是本扩展影响的~~
不好意思,我又看了原题,我理解错了,现在的版本(>v0.16.6,还在审核中,甚至给我拒绝了)没有这个问题了
补充一下。之前写了不知在哪裡。
这个 #352 的问题很复杂。
- B站本身与Firefox有相容问题。所以你会看到楼主第一张GIF也是怪怪的
- 然后是安装了旧版ScriptCat,会发生更奇怪的现象。
对於那个另更怪的现象,我好像花了不止一天的时间。虽然深入的因果关係我解释不了,但结果论是,
B站是非UTF-8,SC注入代码是UTF-8带非ASCII非中文字
v0.10.0 的升级时加了一堆东西。 其中一个dayjs 或是cron 的包裡面包含了一些非ASCII非中文的字 (多国语言时间日期用),还有非打印的字元符。 B站是简体中文编码,不是UTF-8 ScriptCat注入代码是UTF-8 以往没有指定UTF-8编码 所以注入代码后影响了页面。
#501 提交了解决方案。 之后也再做了一些TreeShaking,尽量把问题代码抽走
现在是第一张GIF的行为 这样的话你的ScriptCat是没问题的。是Firefox的问题
上面链结的 beta 版已经是处理好这个问题的版本 虽然名字是Beta,但实际内容是穏定版