相关疑难解决方法(0)

检测URL更改(无窗口卸载)

我想在"更改URL之前"事件中添加一个侦听器,并可以访问旧URL.window.onbeforeunload如果页面没有重新加载(AJAX驱动的页面),则不会触发.

例如,当您单击右侧导航栏中的其他视频时,会在YouTube视频页面上发生这种情况.

我看过这篇民意调查的帖子window.location.但这不会捕获旧的URL.

这适用于Chrome扩展程序.我正在寻找一种方法来检测javascript中的URL更改之前.

javascript ajax url google-chrome-extension

5
推荐指数
1
解决办法
4306
查看次数

如何以编程方式实时更新 Google 文档(通过 Chrome 扩展程序或外部 JS)

我想通过 Google Chrome 扩展程序或简单的 JavaScript 在外部以编程方式编辑我的 Google Doc,并在 Google Doc 中实时(实时)查看更改。当这个问题出现时,我正在寻找可以编辑 Google 文档并以编程方式保存更改的 Chrome 扩展程序。在我的研究过程中,我遇到了Grammarly。他们如何近乎实时地将拼写更正应用到 Google Doc 中,这给我留下了深刻的印象。你可以像这样重现它:

  1. 安装Grammarly Chrome 扩展
  1. 打开/创建 Google 文档
  2. 让 Grammarly 检查您的文本(突出显示包含错误的单词)
  3. 左键单击突出显示的单词
  4. 单击建议的更正

然后 Grammarly 将更新 Google Doc。我注意到了什么:

  • Google Doc 似乎没有通过 Google Docs API 或 Google AppScript 更新
  • 当用户手动编辑文档时,保存过程的行为似乎与 Google 文档本身的官方自动保存机制相同。这可以解释如下:
    • 自动保存指示器被触发
      在此处输入图片说明
    • save执行Google Docs HTTP 请求
      HTTP FormData 还包含适当的参数组合(数组的第 1 个命令中定义的索引范围si(startIndex) 和ei(endIndex)内的现有单词被第 2 个命令中的新单词替换)
[{"commands":[{"ty":"ds","si":229,"ei":232}, {"ty":"is","ibi":229,"s":"Test"}]}]
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

我已经尝试了以下解决方案:

  1. 使用Google 文档 API
    结果: ?工作,但有长达 5 秒的明显延迟 …

javascript google-api google-docs google-chrome-extension google-apps-script

5
推荐指数
1
解决办法
523
查看次数

如何将“globalThis”填充到旧浏览器中?

我们中的许多人使用最新的 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 browser cross-browser google-chrome-extension

5
推荐指数
1
解决办法
4224
查看次数

Chrome扩展程序:通过注入调用页面脚本

是否可以将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)

javascript dom code-injection google-chrome-extension

4
推荐指数
1
解决办法
2626
查看次数

将消息从Chrome扩展程序传递到网页

我需要在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

javascript jquery javascript-events google-chrome-extension

4
推荐指数
1
解决办法
3816
查看次数

有没有办法模拟用鼠标点击鼠标按下多个键?

我正在研究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

4
推荐指数
1
解决办法
3038
查看次数

以不可检测的方式检查WebSocket框架

如何在Chrome扩展程序或Firefox附加组件中以网页无法检测到的方式阅读网页的WebSocket框架?

从Chrome Dev Tools扩展程序检查WebSockets框架可以制定类似的问题,但开发NPAPI插件不再有意义,因为它很快就会被删除.

javascript google-chrome firefox-addon websocket google-chrome-extension

4
推荐指数
2
解决办法
2557
查看次数

覆盖 Chrome 扩展中的 javascript 警报

我正在尝试构建一个 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)

javascript google-chrome-extension

4
推荐指数
1
解决办法
1533
查看次数

在控制台中访问 c​​hrome 扩展功能?

如果我在 Chrome 扩展中创建了一堆函数,是否可以通过控制台访问它们?

例如:

内容脚本.js

function test() {
    console.log('hello')
}
Run Code Online (Sandbox Code Playgroud)

然后就可以test()在控制台运行了

javascript google-chrome-extension

4
推荐指数
1
解决办法
2036
查看次数

2021 年 7 月后通过 Chrome 扩展程序访问 Google 文档的内容

我编写了一个 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

4
推荐指数
1
解决办法
1403
查看次数