我想通过 Google Chrome 扩展程序或简单的 JavaScript 在外部以编程方式编辑我的 Google Doc,并在 Google Doc 中实时(实时)查看更改。当这个问题出现时,我正在寻找可以编辑 Google 文档并以编程方式保存更改的 Chrome 扩展程序。在我的研究过程中,我遇到了Grammarly。他们如何近乎实时地将拼写更正应用到 Google Doc 中,这给我留下了深刻的印象。你可以像这样重现它:
然后 Grammarly 将更新 Google Doc。我注意到了什么:
[{"commands":[{"ty":"ds","si":229,"ei":232}, {"ty":"is","ibi":229,"s":"Test"}]}]
Run Code Online (Sandbox Code Playgroud)
我已经尝试了以下解决方案:
javascript google-api google-docs google-chrome-extension google-apps-script
我们中的许多人使用最新的 Chromium 或 Firefox 浏览器以外的浏览器在 2021 年最后一个季度注意到,网络上的很多东西在几周内就开始出现故障。很快我们就发现这不是孤立的事情,而是更大的事情正在发生。所有问题似乎都是由与旧版或非 Chromium/Firefox 浏览器不兼容的网站使用的相对较新的 JavaScript 引起的,并且它们在许多库中的存在可能导致该问题同时出现在各处。
举个例子,我使用的浏览器不支持许多以前可以工作的网站上的内容。也就是说,这是一个网站的情况,以前运行得很好,但由于一些软件开发人员感到无聊,决定用不太兼容的 JS 替换完全兼容的 JS,不再这样做。
例如,铁(铬)70 不再适用于许多事物,而淡月/新月 28 不再适用于许多事物。有些东西与它们中的任何一个都不起作用,有些则仅与任何一个都不起作用。
StackOverflow.com 最近加入了这个前沿的 JS 潮流:我无法再对 Iron 70 中的任何内容进行投票或评论,并且发布问题已半失效,尽管这一切在 New Moon 28 中仍然有效(目前)。以下是加载此页面时,我在开发人员工具控制台中遇到的一些 JS 错误:
Uncaught ReferenceError: globalThis is not defined
at stub.en.js?v=05770adb5484:1
at stub.en.js?v=05770adb5484:1
at stub.en.js?v=05770adb5484:1
how-do-i-escape-only-single-quotes:45 Uncaught TypeError: StackExchange.ready is not a function
at how-do-i-escape-only-single-quotes:45
how-do-i-escape-only-single-quotes:79 Uncaught TypeError: StackExchange.ready is not a function
at how-do-i-escape-only-single-quotes:79
how-do-i-escape-only-single-quotes:87 Uncaught TypeError: StackExchange.init is not a function
at how-do-i-escape-only-single-quotes:87 …Run Code Online (Sandbox Code Playgroud) 是否可以将javascript文件注入DOM并立即执行?我希望在页面/ DOM中调用javascript函数.由于孤立的世界,单个内容脚本将无法工作.需要使用背景页面chrome.tabs.executeScript().
简单示例:
DOM javascript
function sayHello(){
alert('Hello World');
}
Run Code Online (Sandbox Code Playgroud)
要注入的Javascript文件
console.log('Injection complete. Now calling DOM script.');
sayHello();
Run Code Online (Sandbox Code Playgroud) 我需要在Chrome扩展程序中传递消息(引发事件),并让网页上的JavaScript对此做出反应。
在content_script.js扩展名中,应该有一个类似
raiseXYZevent(data);
Run Code Online (Sandbox Code Playgroud)
网页上的JavaScript http://foo.com/mypage.html应该执行处理程序
function processXYZevent(data) { ... }
Run Code Online (Sandbox Code Playgroud)
问题在于扩展中的内容脚本无法直接与网页上的JavaScript交互(只能修改DOM)。有没有办法从扩展名中进行DOM更改,以某种方式从网页中检测到它们并调用processXYZevent?
我正在研究chrome扩展,以使Netflix视频播放器打开隐藏的不断变化的质量面板.
Netflix根据Internet的速度自动更改视频质量.
但是有一种已知的方法可以打开隐藏面板并手动更改质量.
这是在HTML5播放器中仅打开隐藏面板的方法CTRL + SHIFT + ALT + S.
有没有办法当用户点击标题时,
它模拟键盘键CTRL + SHIFT + ALT + S?
$('body').on('click', 'div.player-status .player-status-main-title', function () {
alert('Clicked!');
//Simulate?
});
Run Code Online (Sandbox Code Playgroud) javascript jquery html5 google-chrome google-chrome-extension
如何在Chrome扩展程序或Firefox附加组件中以网页无法检测到的方式阅读网页的WebSocket框架?
从Chrome Dev Tools扩展程序检查WebSockets框架可以制定类似的问题,但开发NPAPI插件不再有意义,因为它很快就会被删除.
javascript google-chrome firefox-addon websocket google-chrome-extension
我正在尝试构建一个 chrome 扩展;在这方面的经验很少。我按照使用内容脚本将代码插入到页面上下文中,使用第一种方法将 js 代码注入到页面中。
我正在尝试在其他人的代码上构建一个js框架,该框架严重依赖于警报,这些警报破坏了我的覆盖层的功能,所以我只想让它们安静一下——实际上,我宁愿将消息传递到控制台.log 但我会采取我在这个阶段能得到的东西。因此,我尝试遵循JavaScript:重写alert()来设置要注入的最终js文件(nogo.js)。
nogo.js 被注入,但它似乎没有抑制警报的效果。难道是因为另一个 html 文件本身是由另一个 js 文件启动的,所以注入发生得太慢或无序?
清单.json
"content_scripts": [
{
"matches": ["*://URL/*"],
"js": ["myscript.js"],
"run_at": "document_end",
"all_frames": true
},
{
"matches": ["*://URL/*"],
"js": ["noalerts.js"],
"run_at": "document_start",
"all_frames": true
}
],
"web_accessible_resources": ["script.js","nogo.js"]
}
Run Code Online (Sandbox Code Playgroud)
myscript.js
var s = document.createElement('script');
// TODO: add "script.js" to web_accessible_resources in manifest.json
s.src = chrome.extension.getURL('script.js');
s.onload = function() {
this.remove();
};
(document.head || document.documentElement).appendChild(s);
Run Code Online (Sandbox Code Playgroud)
noalerts.js
var n = document.createElement('script');
// TODO: add "script.js" to web_accessible_resources …Run Code Online (Sandbox Code Playgroud) 如果我在 Chrome 扩展中创建了一堆函数,是否可以通过控制台访问它们?
例如:
内容脚本.js
function test() {
console.log('hello')
}
Run Code Online (Sandbox Code Playgroud)
然后就可以test()在控制台运行了
我编写了一个 Chrome 扩展程序,用于计算 Google 文档中的字数,并将它们与数据源(CSV、表格或数据库)中的建议字数进行比较。
我的方法是解析span.kix-lineview-text-block页面上的每个内容,当 Google切换到 SVG 画布显示时,该方法停止工作。这是显示所有字数为 0 的屏幕截图。
解析页面的推荐替代方法是身份验证。即使用 Oauth 2.0 通过记录良好的 Google Docs API来授权请求并编辑内容。
GDocs 的 API 概述很有意义。但我对身份验证很陌生,而且我太菜鸟了,无法理解这个答案。谷歌提供了一个快速入门教程,但我无法让它作为扩展运行。
显然我的知识存在差距,而且我不知道要搜索什么(“Google Docs chrome扩展身份验证”引导我来到这里......)大多数Google的示例都使用 Java/PHP/Python,这让我想知道如果我找错了树。
比我聪明的人可以指出我正在寻找什么和/或在哪里学习它吗?
TL;DR - 我有一个主要工作的 Chrome 扩展程序,需要来自 Google 文档的数据。如何画猫头鹰的其余部分?
javascript google-chrome google-docs google-docs-api google-chrome-extension
javascript ×10
google-docs ×2
jquery ×2
ajax ×1
browser ×1
dom ×1
google-api ×1
html5 ×1
url ×1
websocket ×1