粉

粉笔自动全开草稿

•
创建于 1 个月前
•
更新于 1 天前
页面加载后自动打开全部题的草稿;每题注入 ABCD 字母选择盒(D 后带「下一题」),草稿画布锁定为题干+选项高度;新增「笔刷设置」面板(黑/蓝/红笔色切换 + 粗细无级调节);MutationObserver 适配 SPA 增量渲染,按题目作用域去重;同步 canvas#draft 绘图缓冲区尺寸为容器显示尺寸,修复退出草稿重开后笔迹被垂直压缩;新增 ABCD 点击按钮本身变色(背题对错 / 做题选中),修复判分重建选项节点后 ABCD 按钮不变色;退出重进后按页面既有作答状态自动回填 ABCD 按钮颜色(做题选中深蓝 / 背题对错绿红);修复做题模式退出重进后 ABCD 按钮空白不回填:选中态改多信号识别(checked 属性 / aria / class),MutationObserver 增补属性级监听并按题精准同步,定时补偿改为前 30 秒持续扫描 + pageshow/visibilitychange/focus 兜底;新增资料分析「一拖五」支持:每个子题独立注入字母盒与草稿画布(tab 切换即就位),「下一题」优先推进组内子题,材料区配独立草稿画布(可完全打开、五题共享、笔迹存 localStorage 退出重进重放),隐藏会吞掉全组指针事件的组级原生草稿;新增性能护栏:草稿与画布只在题目接近视口时才自动创建,低配环境不再 110 个画布全开卡死;平板 Apple Pencil 笔迹改 Catmull-Rom 样条消除折线,原生草稿路径加合并采样还原/防切笔/收笔兜底;新增局域网自动更新地址;v2.8.11 修平板笔迹「一条笔画成两条交错的线」:Apple Pencil 会同时产生 pen 与 touch 两路指针事件,此前两路被一起喂进同一点序导致来回重描,现按 pointerId/pointerType 锁定本笔指针并对同一采样坐标去重。v2.8.12 笔迹管线去浏览器化:跨 world 实例守卫(DOM 属性标记,防重复注入);会话期间原生草稿画布静音(画者独占,治「两个画者各画一遍」);归属判定不再依赖 pointerType(避免第三方 WebView 壳里把笔画整段切掉);采样去重放宽到 0.5px 并新增回访检测(治重复/乱序投递导致的重描);自适应「触控笔被报成 touch」的设备(把触摸当笔接管);新增胶囊面板「笔迹自检」(采集指针流分布/采样密度/原生画布像素变化,跨 world 可读)。v2.8.13 依据真机自检数据(Via 报 pen 但采样时没开书写会话)重做笔迹稳健性:原生补密改为幂等(按已投递坐标+区间投影判定,杜绝同一物理采样被补投两遍导致粉笔画出两条交错的线);归属判定允许浏览器在一笔之内更换 pointerId(不再把笔画截断成直线);采样去重改为 1px 距离判定;原生画布静音改为只在「可书写」态生效(修 pass 态手指写不了原生草稿的回归);自检新增指针生命周期台账/事件时间线/自绘笔台账/重复投递嫌疑判定与 captureValid 标志。v2.8.14 依据 Via 真机「有效采样」自检数据修掉「一条笔画成两条交错的线」的真正成因:原生补密的已投递坐标表在每次事件后重建时被丢弃,幂等防线只在单个事件内生效、跨帧完全失效,于是浏览器已经独立投递过的同一批真实采样又被补投一遍(铁证:同一批 14 个采样在相隔 1ms 的两个时间戳里各出现一次;补投 441 点而幂等只挡下 57 点);现 sent 随笔画继承并把保留上限提到 800,同时补记原生路径的合并采样密度、时间线区分合成事件与原始事件、自检新增「补投/采样」比值指标。v2.8.15:胶囊面板里的「笔迹自检」入口默认隐藏(功能代码全部保留,需要时把 PENDIAG_ROW_VISIBLE 改回 true,或直接调用 __MARVIS_FENBI_PEN__())。v2.8.16 笔迹快照:撤销/反撤/清空后粉笔会把全部笔迹按当前笔色单色重画(笔画数据里没有颜色字段,多色是本脚本 ctx hook 画时改写的),现每笔收笔后拍画布位图快照入档,检测到粉笔重绘(轮询对比内容,实测其重绘晚到约 0.5s)就把对应时刻的彩色位图原样贴回,多色笔迹在撤销/清空后不再塌成一种颜色。v2.8.17 防闪遮罩:粉笔的重绘晚到约 0.5s,期间画布先是单色再被贴回彩色 → 用户看到闪一下别的颜色;现点击撤销/反撤的瞬间就把目标状态截图盖在画布上方(veil,pointer-events:none),粉笔的单色重绘被完全遮住,快照贴好后摘掉,全程无闪。v2.9.2 修分栏草稿三个致命问题:① 组壳自己带着行内 !important(width:100%/left:auto)把样式表压死,组壳停在静态位置、宽 1905px,右栏连带滑块被推出视口 —— 用户看到的「右面被裁剪」「没有拖动按钮」都是它;现改用行内 setProperty 把 left/right/width 钉在视口上,看门狗每 700ms 按一次。② 画布原来铺满整栏还吃事件,右边选项点不动、手指也滚不动;现画布 pointer-events:none,事件改挂滚动容器:手指=原生滚动/点选,笔=写字(仅在本会话见过 pointerType=pen 时区分),抬笔后 420ms 内的 click 一律吞掉防误点。③ 顶部草稿栏补回笔色三圆点与粗细 A−/A+(原笔色面板在页面 header 上被顶栏盖住),右栏内容加 max-width:100% 治横向撑破,滑块 7px→12px 并加 26px 透明热区,不能滚时也显示淡色轨道。v2.9.3 分栏列宽自适应:不再写死左右比例,按「屏幕宽度 + 这一组内容」现算——屏越窄越把空间让给题目(<720 给右栏 60%),材料里有图/表左边加权,选项被折成多行右边加权,夹在 30%~60% 之间并保每侧最小宽;转屏/改窗口自动重算。分隔条手拖过就记住比例(localStorage),顶栏新增「⇔」按钮一键回到自适应(手动态按钮变橙色提示)。v2.9.4 修分栏草稿「触摸冲突 + 笔断触」:① 手指一律完全交还原生——不再用接触面宽度去猜笔,实测 CDP 与部分 WebView 把手指 width 也报成 1~2px,猜错的代价是手指滑动被 preventDefault 吃掉、页面 body 反而滚了 385px 而两栏纹丝不动,还顺手画出一道线;现在只有 pointerType=pen(或显式开 localStorage[marvis-app-touchpen]=1)才写字。② 进入分栏时锁住 html/body 滚动并给两栏加 overscroll-behavior:contain,栏内滚到底不再链式带动页面。③ 断触根因是收笔严格比对 pointerId,浏览器一笔内换 id 或手掌触发 pointercancel 就永久漏收,此后每一笔都被「已有笔画」挡掉;现按指针类型收尾并允许一笔内换 id。④ 合并采样补点(getCoalescedEvents 逐点 0.5px 去重),快速运笔不再出现折角与空隙。⑤ 抬笔后吞 click 改为「只吞落在刚写的笔画 bbox 上」的,用笔点选项不会再点不动;单点(笔点选项)不再被当成一笔。v2.9.5 胶囊面板里的「分栏草稿 APP式」改为默认打开(只有显式关过才记成关闭),不再需要先去面板里翻开关。v2.9.6 修 v2.9.4 带进来的两个回归(同根):① 两栏的 touch-action 从 pan-y pinch-zoom 改回 auto —— touch-action 在 pointerdown 之前就替浏览器承诺了「这个手势是平移」,之后 preventDefault 收不回来;iPad 上 Apple Pencil 拖动本身就是可滚动手势,于是笔一落就被拿去滚屏、pointer 流随即 pointercancel、笔画只剩 1 个点被丢弃,用户看到的正是「用笔写也变成触摸的了」;同一份声明还会让 iOS 在 -webkit-overflow-scrolling:touch 的内层容器上整块失效,手指划不动、只剩拖滚动条。② 新增两条兜底:笔写期间把栏位 scrollTop 钉住(任内核把笔当滚动也退回去),手指滚动走「原生优先 + 失效接管」——先观察原生是否真的滚,只有连续 140ms 手指移动而 scrollTop 不动时才由脚本自己算 scrollTop 并补惯性,原生正常的设备一根手指都不碰。v2.9.7 按「笔只写字、绝不拖页面」这条底层语义重做手势分工:两栏内容区 touch-action 改为 none (浏览器在这些容器上彻底不做手势滚动,笔的 pointer 流不会再被抢走导致 pointercancel 断笔),手指滚动改由脚本全权负责(1:1 跟手 + 抬手惯性,移动不足 8px 仍算点击所以选项照常点得动,笔及其 touch 兼容流一律不参与),两个滚动条的拖动不受影响、手指和笔都能拖;另加兜底:个别不认 touch-action 的内核若原生仍在滚,检测到 scrollTop 被外部改走就立刻交还控制权,绝不与原生抢。v2.9.8 补「手指不许穿透」:分栏草稿展开后是一张盖在题目上的纸,笔在上面写、手指只负责滚(含拖两侧滚动条),不该顺手点到下面那一层的选项 / 收藏错题 / 子题 tab —— 之前把手指完全交还原生,等于纸是透明的,手掌一搭就把答案改了;现在在滚动容器捕获阶段断掉触摸的 pointerdown 与随后合成的 click,笔与鼠标一律放行(笔点选项照常有效),顶栏与两颗滚动条不受影响;同时把 setPointerCapture 从 pointerdown 推迟到「真的开始画」之后——指针捕获会把随后合成 click 的 target 改成滚动容器,导致笔点选项永远点不中(这是 v2.9.4 起就存在的隐蔽问题)。v2.9.9 按「草稿打开后手和笔完全一样」重定稿:不再按 pointerType 分流 —— 落在内容区的任何指针(手指、笔、鼠标左键)一律写成笔迹,pointerdown 与合成 click 都在滚动容器捕获层截住,下面的选项 / 收藏错题 / 子题 tab 一个也收不到;内容区彻底没有手势滚动(touch-action:none + touchmove 兜底),滚动只剩两个入口:左右两侧的滚动条,手指和笔都能拖。同步把「触摸当笔」开关、手指滚动接管(跟手/惯性/原生判定)整段删掉,改为单一语义,并保留 Apple Pencil 双路指针去重(pen 一到就丢弃先到的 touch 笔画,避免两条交错的线)。v2.9.10 修分栏草稿「书写断触」:① 每 700ms 的看门狗在笔写期间不再量画布尺寸、不再整屏重绘 —— appSizeSide 会把画布高度临时压成 0 去量内容高,栏位 scrollHeight 一抖、scrollTop 被夹回去,iPadOS 看到滚动就把笔的指针流 pointercancel 掉;而 appRedraw 又会清空画布重画,那时正在写的这一笔还没进 acts,等于把写到一半的墨迹抹掉。② 重绘时把「正在写的这一笔」一并补画,任何一次重绘都不再吃掉在写墨迹。③ pointercancel 不再当抬笔:系统 cancel 之后常用新的 pointerdown 把笔交回来,以前一 cancel 就收笔、新 down 又开一笔,一条连续的线被切成一段一段;现在 cancel 只摘滚动手闸并标成孤儿笔,下一次 down 落在上一笔落点 48px 内就续着画同一笔,离得远才收尾。④ 去掉「多指只认主指」的准入 —— 手掌在屏上时它会误挡笔,而「笔接管触摸笔画」那条规则已经足够拒绝第二支指针。v2.9.11 分栏草稿的答题按钮全部搬进顶栏:分栏打开后内容区就是一张纸,里面的 ABCD 字母盒与 标记/草稿/收藏 三个图标全被自家的纸挡住点不动,现顶栏加一颗题号按钮(自动跟随右栏滚动显示当前子题,如「117.▾」),点开是答题面板——本组五道题各一行,行内直接点 A/B/C/D 作答(走原生 label 路径,判分对错与重选回填口径不变)、点题号把右栏滚到那道题、行尾带 标记 与 收藏 两个图标代点原生按钮;点字母只改答案不跳画面,点空白处收起。内容区里那排失效的字母盒与三个图标在分栏模式下一并隐藏(退出分栏自动恢复);资料分析组内的「下一题」按钮去掉(五题堆在同一栏靠滚动翻,普通单选题照旧保留)。为了让面板代点的原生 click 能穿过自家的纸,新增 appClickBypass 放行计数。v2.9.12 ① 分栏草稿里把每道题的 ABCD 字母盒放回内容区并让它真能点 —— v2.9.11 为了「搬到顶栏」把它整排藏了,用户反馈「这里连按钮都没有了」;字母盒是脚本自己注入的 UI,现在进纸的白名单(appInOwnUI),点头母只作答不落笔,合成 click 走 appAllowOnce 双层放行,按钮也放大到 30px 好按。顶栏题号面板照旧保留(标记/收藏仍在面板里)。② 修「点左上角叉退出后被送回第一题」:进分栏时把 html/body 的 overflow 锁成 hidden,WebKit 顺手把文档滚回 0,而五道子题在展平模式下是页面上顺排的,一退出页面就停在最上面。现在退出前记住正在看的那道子题,退出后按它的绝对位置把页面滚回去(原生 tab 模式则切回对应 tab 并滚容器)。v2.9.13 分栏草稿里把 ABCD 字母盒与标记/草稿/收藏三个图标彻底隐藏,并把「笔写到题目左上角就断」修掉:v2.9.12 把字母盒放回内容区还给到 z-index:260,它盖在画布(z-index:5)上面 —— 笔落上去时命中盒子、被判成「点了自家的 UI」而不落笔,从旁边写过来的墨迹又被它整片遮住,看着就是笔一触到那块就断;现在字母盒用 display:none 完全退出布局与命中,画布 z-index 提到 60(题内任何注入元素都压不住墨迹),纸的白名单只留顶栏/两颗滚动条/答题面板,并把内容区里的原生控件统一设成 pointer-events:none —— 笔落在题目里的任何位置(题号、题干、选项、图标原位)都是写字。答题改走顶栏题号按钮弹出的面板(点字母作答、点题号跳题、行尾标记/收藏)。v2.9.14 把「分栏默认打开」真正落到实处:以前只是开关默认开,实际还得手动点题旁的笔图标才会进分栏,用户以为开着、其实在写粉笔原生草稿 —— 原生草稿只覆盖它自己那一小块,写到别处就断,看着就是「这块没有草稿覆盖着」;现在资料分析组一进视口就自动进分栏(用户点 × 主动关掉的组本次页面会话不再自动进,刷新后恢复;结构不支持或打开抛错只试一次并 toast 报错),另外看门狗发现顶栏被页面重渲染干掉时会自动重建,不再出现「分栏还在、按钮没了」。v2.9.15 修分栏草稿里「那块区域写不出 / 写的字像被什么挡住」—— 真凶是粉笔页面上常驻的透明覆盖层:实测在选项上做 elementFromPoint,命中的是 div.modal-overlay 这类铺满区域的空壳(z-index 动辄 1000+)。① 落笔监听从「滚动容器」提到 document 捕获层,落点只按坐标归属到左栏/右栏 —— 覆盖层盖在哪儿都拦不住,以前这类区域 pointerdown 的传播路径绕开了滚动容器,我们根本收不到事件,那块地方怎么写都不出墨;② 画布 z-index 60 → 2147483100(组壳已把整块钉在 2400 这一档,画布在组内取最高),任何页面覆盖层都压不住墨迹,以前墨迹被透明/半透明覆盖层整片遮住,看着就是「有东西挡住我的字」;③ 画布高度改量「真实内容最底部」(一路往最后一个可见后代钻)而不是宿主的 scrollHeight —— 宿主在 flex 布局里会被压成一屏高,内容溢出却不撑高 scrollHeight,画布只铺一屏,往下滚到第 117/118 题再写就落在画布外面;同时按边长自动把 dpr 降到 1,避开 iOS canvas 16.7M 像素上限。v2.9.16 按用户要求收掉三处冗余:① 取消「资料分析组一进视口就自动进分栏」—— 这是 v2.9.14 自作主张加的,现在回到「点题旁的笔图标才进分栏」;② 胶囊设置面板里的「资料分析 · 1拖5」开关已隐藏(板块恒为开启,存量存过 0 的会被清掉,免得面板里没有开关、板块却静悄悄不工作);③ 分栏顶栏的「笔」「橡皮」两颗按钮隐藏 —— 橡皮从未实现(disabled、点了没反应),笔是唯一模式、恒亮,两者都是空操作;列宽自适应按钮与粗细数值照旧保留。v2.9.17 把「答题入口 + 草稿纸」并成一层:顶栏原来那颗「117.▾」按钮和它弹出的五行面板整个删掉,改成五颗题号按钮(一道题一颗,segmented 紧凑样式,竖屏 768/810 也放得下)——点谁滚到谁,并弹出那道题专属的草稿纸;纸是半透明白(约 90%)的浮层,纸头一行就是这题的 ABCD / 标记 / 收藏,×收起、拖纸头移动、右下角拉大小(位置大小存 localStorage,换题不重置)。每题的笔迹分开存(localStorage 里 sheets[题号]),撤销/反撤/清空作用于「眼前这张纸」;纸收起时仍按旧语义作用于左右两栏。纸跟着当前题走:滚动到下一题,纸就换成下一题的(笔写期间有滚动闸,不会滚)。v2.9.18 纸头再添两颗:①「调大小」—— 点一下进入调整模式,纸的四角与四边中点长出 8 个手柄,拖任一手柄自由改大小(对角锚定,最小 340x220),再点一次完成并存盘;默认尺寸同时放大(1180 屏 542x492 → 661x542);②「不透明度」—— 点一下换一档 85% → 70% → 55% → 42%,默认由 90% 降到 70%(用户嫌 90% 不够透),档位存 localStorage。v2.9.17 存下的尺寸若等于当年的默认值(说明没人手动调过)会自动换成新默认,手动调过的一律原样保留。v2.9.19 尺寸从「拖手柄自由调」改成三档(用户定稿:默认最大档铺满屏幕,另有中档、小档),纸头那颗调大小图标换成「小 中 大」三颗分段按钮 —— 点哪档就换哪档,当前档高亮,档位存 localStorage(默认「大」);大档铺满顶栏下方整块并去掉圆角边框,中档 = v2.9.18 的默认尺寸,小档再小一圈;v2.9.18 的 8 个手柄与右下角三角整套删除(两套并存会互相打架);拖纸头仍可移动,且每档各记一个位置。v2.9.20 纸头两行 + 三颗笔迹键 + 做题状态可见:① 撤销/反撤/清空 搬进纸头的第二行(以前只能伸手去顶栏按,写到最后一行够不着),没得撤时自动置灰;② 纸头分成两行——第一行「题号 + ABCD + ×」,第二行「小中大 | 不透明度 | 撤销 反撤 清空 | 标记 收藏」,小档 380px 也放得下;③ 标记 / 收藏 已开时图标填成实心并转成蓝色(原生 li 上挂 .active,纸头读它同步),点完不再「没有一点互动的感觉」;④ 修「点开 125 号题的纸、顶栏题号却亮着 123」:滚到底时当前题认作最后一道,且纸开着时顶栏高亮跟着纸上那一道走。v2.9.21 纸头按需折行 + 蓝色框线 + 两套撤销彻底分家:① 工具条不再硬折两行——h1(题号+ABCD)与 h2(三档/透明度/撤销反撤清空/标记收藏/×)是 flex-wrap 的两个子项,装得下就一行、装不下才落到第二行(小档才需要),中档宽度同时放宽到 0.58vw(最小 430);② 纸头所有框线统一成蓝色(字母框、三档分段、图标描边都对 #2F5BEA),跟顶栏一致;③ 顶栏那三颗(撤销/反撤/删除)从此只控制左右两栏那张大画布,纸头那三颗只控制眼前这张纸,两套历史各算各的(此前纸一开、顶栏三颗也跟着改指纸)。 v2.9.22 修「点开 125 的纸却显示 123」:根因是我自己加的「纸跟着当前题走」——开纸后的滚动/尺寸重算把「当前题」算回上一道,纸被悄悄换掉(连带顶栏改号)。现在纸只由点题号决定,不再被自动改写;顶栏高亮改成按题号字符串匹配(Angular 换节点也不丢),且开纸时先刷高亮再刷纸头(纸头刷新抛错也不会把高亮留在旧题上)。另外修「纸开着 A 题、在 B 题的位置点 B 题被当成点自己而收纸」——现在正常换纸。 v2.9.23 防误触(默认只认笔 + 一颗手写开关):手掌/手指落在纸面或两栏上不再落墨 —— 默认只有 Apple Pencil(和鼠标左键)能写,手指碰纸仍然什么都不透过去,但纸头按钮、拖纸头、两颗滚动条、顶栏照旧用手指按;要手指写字就点顶栏那颗 ✋(橘色=已打开,选择记住)。同时修掉一个老毛病:笔正在写时手掌在 0.7 秒后落下会把这一笔截断、还另画一道 —— 现在笔写期间手指/手掌一律让路,既不落墨也不打断。
#刷题辅助
#粉笔题库
#草稿工具
#画布增强
数据统计
总安装量
954
近 24 小时
+49
用户评分
-
广告paperbuddy
增强粉笔题库的答题操作、草稿画布和手写笔迹管理。

加载中…
脚本详情
适用网站
许可协议
未声明
未声明协议,他人引用需谨慎