问题标签 [google-chrome-extension]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4099 浏览

javascript - jQuery.ajax() 在 Chrome 扩展中以 GET 形式发送 POST 请求

我正在构建一个小型 Chrome 扩展,它必须通过 POST http 请求将消息发送到我公司网络中的服务器,并且我正在使用 jQuery 1.4.1 来加快 javascript 部分的开发。

我有这个代码来发送请求:

以这种方式完成的请求失败,在 Chrome 日志中我看到服务器以 http 状态 400 和文本“此方法需要 POST”响应。

如果我用这个更改为上面的代码:

一切正常,http状态为200,服务器端我可以看到我发送的数据已正确保存。

我需要使用完整的 $.ajax() 方法,因为我需要在成功或失败的情况下做一些工作,以及在请求完成时做一些其他的工作,所以 $.post() 是不够的。
我是在调用 $.ajax() 时做错了什么,还是存在某种问题,可能是因为我在 Chrome 扩展的 xontext 中?

谢谢

0 投票
2 回答
31780 浏览

javascript - 如何使用 Javascript 打开新的隐身窗口?(谷歌浏览器)

我想帮助我的朋友在执行一些鼠标手势(Mouse Stroke - Chrome Extension 中的自定义笔划)时在新的隐身窗口中打开一个网站。

0 投票
1 回答
589 浏览

css - 在 iframe 中编辑 CSS 将 Select 标签的文本颜色设置为黑色?

对于 Google Chrome 扩展,这是一个非常具体的问题。

http://www.meebo.com/mobile/

当您在 iPhone 或 Droid 手机上访问 Meebo.com 时,您会跳转到此页面。但是,如果您注意到,您可以在其中设置自己或您想要的状态的状态框在白色背景上有白色文本。

为了让网站出现在 Google Chrome 扩展程序的弹出窗口(单击地址栏旁边的图标时下拉的窗口)中,该窗口不是扩展程序中包含的 html 文件,我需要使用 iFrame . 我知道有关于像 javascript 这样的跨站点内容的安全措施,我对访问 CSS 时遇到问题并不感到惊讶。但是有一个阶级,地位,它的颜色是白色的,我需要把它改成黑色。我已经用 Chrome 的 Inspect Element 窗口对其进行了测试,如果我改变它,我会没事的。

我尝试更改 manifest.json 文件以使用 Content-Scripts 注入 CSS 文件,但没有...

我是 Chrome 扩展程序的新手,但我有做 Web 开发的经验。

0 投票
1 回答
3615 浏览

google-chrome - chrome 扩展 - ip 域权限

我的 chrome 扩展需要向我的家庭 LAN 上的服务器发送请求,我没有设置 DNS,所以我对所有内容都使用原始 IP。我通过我的后台页面发送这些请求,因此在清单文件中具有适当的权限应该让我这样做。这就是我在清单中的内容:

但是,使用 http 嗅探器,我看到没有请求发送到该目的地。通过日志记录,我看到了 jQuery$.ajax()调用:

我已经阅读了这个线程,它指示我从后台页面发出 http 请求。

问题:你们认为使用原始 IP 会导致请求被 chrome 丢弃吗?

谢谢。

0 投票
2 回答
73001 浏览

javascript - 如何将 Javascript 字符串转码为 ISO-8859-1?

我正在编写一个适用于使用 ISO-8859-1 的网站的 Chrome 扩展程序。只是为了提供一些上下文,我的扩展程序所做的是通过添加更方便的帖子表单来更快地在网站的论坛上发布帖子。然后,写入消息的文本区域的值通过 Ajax 调用(使用 jQuery)发送。

如果邮件包含类似á这些字符的字符,则在发布的邮件中显示为 á。强制浏览器显示 UTF-8 而不是 ISO-8859-1 可以á正确显示。

我的理解是 Javascript 对其字符串使用 UTF-8,所以我的理论是,如果我在发送之前将字符串转码为 ISO-8859-1,它应该可以解决我的问题。但是,似乎没有直接的方法可以在 Javascript 中进行这种转码,而且我无法触及服务器端代码。有什么建议吗?

我尝试将创建的表单设置为使用 iso-8859-1,如下所示:

并且:

但这似乎不起作用。

编辑:

问题实际上在于 jQuery 是如何对消息进行 urlencoding 的(或其他方式),我通过告诉 jQuery 不要处理数据并自己处理来解决这个问题,如下面的片段所示:

0 投票
4 回答
71259 浏览

javascript - 从 Chrome 上的 Greasemonkey 脚本将 JS 函数注入页面

我有一个在 Firefox 和 Opera 中运行良好的 Greasemonkey 脚本。但是,我很难让它在 Chrome 中工作。问题是将一个函数注入到页面中,该函数可以由页面中的代码调用。到目前为止,这是我正在做的事情:

首先,我得到了一个对 Firefox的unsafeWindow的帮助引用。这让我可以为 FF 和 Opera(我想还有 Chrome)拥有相同的代码。

接下来,我将一个函数注入到页面中。它实际上只是一个非常薄的包装器,除了在我的 GM 脚本的上下文中调用相应的函数之外什么都不做:

然后,我的脚本中有相应的函数:

最后,我将一些 HTML 注入到页面中,并带有一个链接来调用该函数。

总结一下:在 Firefox 中,当用户单击注入的链接时,它将在 unsafeWindow 上执行函数调用,然后触发超时,在我的 GM 脚本的上下文中调用相应的函数,然后执行实际处理。(如果我在这里错了,请纠正我。)

在 Chrome 中,我只是收到“未捕获的 ReferenceError:未定义 setConfigOption”错误。实际上,在控制台中输入“window.setConfigOption”会产生“未定义”。在 Firebug 和 Opera 开发者控制台中,该功能就在那里。

也许还有另一种方法可以做到这一点,但是我的一些函数是由页面上的 Flash 对象调用的,我认为这使得我有必要在页面上下文中拥有函数。

我在 Greasemonkey wiki 上快速浏览了unsafeWindow 的替代品,但它们看起来都非常难看。我在这里完全走错了路还是应该更仔细地研究这些?

解决方案:我跟着Max S。建议,它现在可以在 Firefox 和 Chrome 中使用。因为我需要对页面可用的函数必须回调到常规函数中,所以我将整个脚本移到了页面上,即它完全包裹在他称为“main()”的函数中。

为了使该 hack 的额外丑陋更容易忍受,我现在至少可以放弃 unsafeWindow 和 WrappedJSObject 的使用。

我仍然没有设法让Greasemonkey wiki中的内容范围运行器正常工作。它应该做同样的事情并且它似乎执行得很好,但是我的函数永远不能<a>被页面中的元素访问,例如。我还没弄清楚为什么会这样。

0 投票
4 回答
6799 浏览

google-chrome - 谷歌浏览器扩展中 popup.html 的 onbeforeunload 事件是否触发?

我正在编写一个带有弹出窗口和背景页面的 google chrome 扩展程序。弹出窗口订阅了后台生成的某些事件,我想在弹出窗口消失时取消订阅这些事件。但是,我没有看到从弹出窗口生成的 onbeforeunload 或 onunload 事件。这些事件被触发了吗?如果没有,关于如何捕获弹出关闭的任何想法?

0 投票
1 回答
2333 浏览

javascript - 使用 Javascript 动态插入脚本

长话短说,我正在开发 Google Chrome 扩展程序。默认情况下,扩展无法访问它们正在操作的页面范围内的变量(您需要通过 DOM 进行通信)。

我想做的是在页面中插入一个脚本;这可以通过定义脚本标签和 src 属性来正常工作。

问题是这个脚本需要事先初始化一个变量。为了初始化这个变量,我试图用它的代码内联(而不是从外部源加载)构造一个脚本元素,但我无法让它工作。

这可能吗?如果可以,我如何在脚本中定义源?我尝试将包含 JS 源的文本节点附加到脚本元素,但无济于事。

0 投票
3 回答
1157 浏览

javascript - Gmail 似乎可以捕获所有键盘事件。有什么办法可以解决吗?

我正在编写一个 Chrome 扩展程序,它使用键盘快捷键启动一个脚本。它在大多数页面上都可以正常工作,但我意识到在 Gmail 上却不行:似乎所有键盘事件都被 Gmail 捕获并且没有冒泡到我的功能中。

我有一个内容脚本(在 Chrome 扩展中,它被添加到您想要的任何页面),它具有(当然简化了):

但实际上,Gmail 确实让我失望了。我知道脚本加载。我尝试了不同的变体window.addEventListener和其他事件类型,但无济于事。

有人知道绕过这个的方法吗?我试图看看 GreaseMonkey 脚本是否可以做到这一点,这把我带到了这里:http ://code.google.com/p/gmail-greasemonkey/但这对我没有帮助。

0 投票
2 回答
638 浏览

google-chrome - 在 google chrome 扩展中存储首选项

使用 Firefox,我可以使用存储扩展首选项Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefService);

我可以使用什么界面在 Chrome 中存储首选项?它们是否会在扩展更新时被覆盖?

谢谢