问题标签 [browser-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 投票
2 回答
774 浏览

javascript - 如何在 kango 框架中的背景和内容脚本之间传输对象

是否可以在浏览器扩展中的背景和内容脚本之间传输对象?

我希望我的后台脚本来处理我的浏览器内存储。我的内容脚本应该跟踪用户交互并存储它们。因此,如果我的“抽象”存储引擎从后台脚本中获取,我计划使用单例模式来获取实例,以避免在用户记录交互并同时通过浏览器扩展的 UI 管理他的数据时出现同步问题。

我的第一次尝试是这样的:

后台脚本

内容脚本

val不是未定义的,如果 google 调试器是可信赖的,但函数未定义,则它是一个对象sayMyName

0 投票
2 回答
8797 浏览

javascript - 测试浏览器扩展

我将编写一堆浏览器扩展(每个流行的浏览器都具有相同的功能)。我希望,一些代码将被共享,但我还不确定这一点。当然,一些扩展将使用本机 API。我在 TDD/BDD 方面没有太多经验,我认为现在是从这个项目中开始遵循这些想法的好时机。

问题是,我不知道如何处理它。我应该为每个浏览器编写不同的测试吗?这些测试我应该走多远?这些扩展将非常简单——本地存储中的一些数据、刷新页面和通过 Web 套接字进行侦听。

我观察到为什么对我来说很难——因为有很多行为,而不是太多模型,它们也依赖于平台。

0 投票
1 回答
2636 浏览

javascript - 如何手动调用 Backbone.js 视图的方法

我正在为使用Backbone.js的网站编写浏览器扩展。它的相关代码如下所示(已更改名称以保护无辜者):

我还在一个<script>块中插入了一些代码来监听postMessage()我从我的扩展注入的 javascript 文件中进行的调用。我希望能够useful_func从那里打电话,但不知道如何,或者如果我什至应该这样做(如果没有,那么我怎样才能达到相同的结果)。

例如,我尝试了以下引用,所有这些都显示为未定义:

  • BigContainer.BaseView.$local_thing
  • BigContainer.BaseView.local_thing
  • Thing
  • document.getElementsByClassName('local_thing')[0].useful_func

重要的是,由于我正在为我不拥有的网站编写扩展程序,因此我无法修改该网站的 Backbone.js 代码来帮助自己。我需要处理那里的东西。

0 投票
0 回答
320 浏览

javascript - 使用由 chrome 扩展注入的元素触发点击原始页面

我正在开发一个 Chrome 扩展程序,它将一个链接注入到页面中,单击该链接会触发对页面中可见的两个链接的点击。当我从控制台运行代码时它可以工作,但由于 Chromes 隔离世界处理扩展,点击事件无法在原始页面链接上触发。有没有解决的办法?

代码:

谢谢你的帮助!

0 投票
2 回答
284 浏览

javascript - 如何为同一个键设置多个值?

我正在使用Crossrider API来开发浏览器扩展。

我想在Crossrider 本地数据库中为同一个键添加多个值,

crossrider 支持的方法是appAPI.db.set

但我想保存许多值,例如:

它以一个值作为参数,如何为同一个键存储多个值?

0 投票
1 回答
4437 浏览

json - Chrome 扩展清单中没有 www

我正在尝试为将 www.site.com 重定向到 site.com 的网站获取 Chrome 扩展程序

此清单文件有效。

这不

错误内容如下:

“无法从 '/Users/colmtuite/dev/mysite-extension' 加载扩展。'content_scripts[0].matches[0]' 的值无效:缺少方案分隔符。”

0 投票
0 回答
129 浏览

javascript - 扩展创建失败,没有任何信息

我有一个可以在 Firefox、IE 和 Chrome 中运行的浏览器扩展程序,我目前正在将它移植到 safari。

我按照苹果开发者网站上的说明进行操作,并将扩展文件夹重命名为myext.safariextension. 我获得了证书,并且我认为 safari 扩展构建器可以识别它。

但是,由于某种原因,创建扩展失败。我收到以下消息:

失败,不知道为什么

我不知道如何解决这个问题。谷歌搜索、SO 搜索和在 SO 聊天室中询问没有产生任何结果。

任何帮助将不胜感激,即使它只是引导我找到正确的解决方案。如果有帮助,这是 Windows 上的 Safari 5。

0 投票
2 回答
3446 浏览

javascript - 是否有浏览器扩展来更改 Date 对象返回的时间?

是否有浏览器扩展来更改 JavaScript 的 Date 对象返回的内容而不更改系统时钟?

当您创建小册子软件时,经常会出现这种情况。您通常希望根据当前日期向访问者展示特定的促销或创意待遇。如果您使用访问者的系统时钟,测试会变得很烦人,因为您必须更改自己的系统时钟,这当然会打乱您的日历提醒,天知道还有什么。

0 投票
1 回答
370 浏览

javascript - 如何检测 Google Instant 页面已完全加载?

我正在开发浏览器扩展程序(想想SEOQuake) - 我需要显示一些有关显示的搜索结果的数据。

问题:如果在加载过程中将任何内容添加到 Google Instant 结果页面,它将覆盖所有添加内容。我发现自己正在编写一些非常不稳定的 setInterval 业务(等到内容ol#rso停止大小变化,诸如此类),所以我想这意味着我不确定如何可靠地确定页面是否已完成加载。

可以让它等待 1-2 秒,但我真的想在加载结果后立即开始获取数据以节省最大时间。

编辑:请记住,我不能使用 DOMElementWhatever,因为 IE8 不支持它。

0 投票
1 回答
1076 浏览

javascript - 如何将数据存储在 crossrider 本地数据库上,以便数据持续存在直到浏览器重新启动/关闭

我必须在我正在使用的 crossrider 本地数据库上存储一个 6 位数字appAPI.db.async
我想实现以下之一:
1)当浏览器被用户关闭时,一种告诉crossrider删除存储数据的方法。
2) 一种在下次重新启动浏览器时自动增加数据的方法。