如何强制 Google 文档从 Chrome 扩展中呈现 HTML 而不是 Canvas?
How to force Google Docs to render HTML instead of Canvas from Chrome Extension?
在 Google Docs 更新为基于 canvas 的呈现而不是 HTML 呈现后,是否可以强制 Google Docs 呈现 HTML来自 chrome 扩展而不是 canvas?不知何故 chrome 像 Grammarly 这样的扩展能够做到这一点,但我不完全确定如何做到这一点。
根据我的研究,虽然我认为是什么允许他们通过 _docs_force_html_by_ext 变量做到这一点,但我相信这仅适用于列入白名单的扩展。
是否有某种替代方法或我可以填写的表格来将我的扩展程序列入白名单?
_docs_force_html_by_ext 未定义:
_docs_force_html_by_ext是通过Grammarly设置的:
这个问题有两种解决方案:对于旧版本的 Google 文档和对于新版本。
解决方案适用于旧版本的 Google Docs
您需要将 GET 参数 ?mode=html 添加到 URL.
例如,如果文档 URL 是:
docs.google.com/document/exampleId/edit
将URL更改为:
docs.google.com/document/d/exampleId/edit?mode=html
这将强制 Google 文档使用 HTML-renderer。
2022 年 3 月 4 日更新
Google 更改了 html 渲染激活码。
html 渲染器在当前代码中,如果您手动打开它,它就可以工作。
我现在正在研究需要满足哪些新条件才能自动启用它。
稍后我会报告结果。
2022 年 3 月 9 日更新
新的解决方案
再一次证明了Google程序员并没有想象中的那么好。
所以...
现在可以通过三种方式启用 html 渲染。
至少我找到了三个:
- 开始前Google文档代码:
window._docs_force_html_by_ext == true ? 'html render' : 'canvas render'
- 开始前Google文档代码:
(GET['mode']=='html' && window._docs_flag_initialData['kix-awcp'] == true) ? 'html' : 'canvas'
- 在 Google 文档代码中的正确位置手动设置所需参数。
但是,Google 的程序员忘记了 window 对象还包含对具有 id 属性集的元素的引用。
例如:
HTML:
<span id="spanId"></id>
JS:
window['spanId'] == true;
也就是说,如果我们可以为页面上的任何元素添加一个id属性,其值将等于_docs_force_html_by_ext,那么我们将自动在window中收到一个标识符具有 !=false 值的对象。由此可见 html 渲染将打开,因为方法 1 的条件已满足。
例如
<body id="_docs_force_html_by_ext ">
提示1:据我所知,任何浏览器插件都可以在主代码之前运行为任意元素添加id属性。
提示2:link元素可以有一个id属性。 我想你明白了。
Google 正在将某些应用程序列入白名单,这些应用程序可以使用脚本强制文档为 HTML 后备版本,这提醒了 canvas 之前的时间或作为带注释的 Canvas 这使得与 SVG canvas.
的扩展集成成为可能
您需要申请白名单才能使用这些功能:https://docs.google.com/forms/d/e/1FAIpQLScFxMgvXlq2KMsp0UIM66pvThTF1hpojiXQTqyq9txW79OWag/viewform
在 Google Docs 更新为基于 canvas 的呈现而不是 HTML 呈现后,是否可以强制 Google Docs 呈现 HTML来自 chrome 扩展而不是 canvas?不知何故 chrome 像 Grammarly 这样的扩展能够做到这一点,但我不完全确定如何做到这一点。
根据我的研究,虽然我认为是什么允许他们通过 _docs_force_html_by_ext 变量做到这一点,但我相信这仅适用于列入白名单的扩展。
是否有某种替代方法或我可以填写的表格来将我的扩展程序列入白名单?
_docs_force_html_by_ext 未定义:
_docs_force_html_by_ext是通过Grammarly设置的:
这个问题有两种解决方案:对于旧版本的 Google 文档和对于新版本。
解决方案适用于旧版本的 Google Docs
您需要将 GET 参数 ?mode=html 添加到 URL.
例如,如果文档 URL 是:
docs.google.com/document/exampleId/edit
将URL更改为:
docs.google.com/document/d/exampleId/edit?mode=html
这将强制 Google 文档使用 HTML-renderer。
2022 年 3 月 4 日更新
Google 更改了 html 渲染激活码。 html 渲染器在当前代码中,如果您手动打开它,它就可以工作。 我现在正在研究需要满足哪些新条件才能自动启用它。 稍后我会报告结果。
2022 年 3 月 9 日更新
新的解决方案
再一次证明了Google程序员并没有想象中的那么好。 所以...
现在可以通过三种方式启用 html 渲染。 至少我找到了三个:
- 开始前Google文档代码:
window._docs_force_html_by_ext == true ? 'html render' : 'canvas render'
- 开始前Google文档代码:
(GET['mode']=='html' && window._docs_flag_initialData['kix-awcp'] == true) ? 'html' : 'canvas'
- 在 Google 文档代码中的正确位置手动设置所需参数。
但是,Google 的程序员忘记了 window 对象还包含对具有 id 属性集的元素的引用。 例如:
HTML:
<span id="spanId"></id>
JS:
window['spanId'] == true;
也就是说,如果我们可以为页面上的任何元素添加一个id属性,其值将等于_docs_force_html_by_ext,那么我们将自动在window中收到一个标识符具有 !=false 值的对象。由此可见 html 渲染将打开,因为方法 1 的条件已满足。 例如
<body id="_docs_force_html_by_ext ">
提示1:据我所知,任何浏览器插件都可以在主代码之前运行为任意元素添加id属性。
提示2:link元素可以有一个id属性。 我想你明白了。
Google 正在将某些应用程序列入白名单,这些应用程序可以使用脚本强制文档为 HTML 后备版本,这提醒了 canvas 之前的时间或作为带注释的 Canvas 这使得与 SVG canvas.
的扩展集成成为可能您需要申请白名单才能使用这些功能:https://docs.google.com/forms/d/e/1FAIpQLScFxMgvXlq2KMsp0UIM66pvThTF1hpojiXQTqyq9txW79OWag/viewform