问题标签 [crossrider]
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.
crossrider - 简单的 CrossRider 扩展不起作用
我在background
范围内有以下内容,它应该每 10 秒将活动选项卡信息打印到控制台:
在最新的 Chrome 上,它不会在控制台中提供任何内容。
javascript - 与 crossrider 侧面板插件通信
crossrider 侧面板只是一个 iframe(您可以使用 js 注入的 html,但我有兴趣使用 iframe 来减少对页面其余部分的干扰)。我根本无法在浏览器扩展程序和 iframe 之间进行任何交互。
除非您可以进行一些基本的 JS 通信,否则我认为添加带有扩展名的侧面板毫无意义。在这种情况下,我想要控制扩展的 iframe 中的一些选项、复选框等。由于这个插件存在,我假设一定有办法。
理想情况下,我希望在子 iframe 中有一些基本的输入处理 js,并让它发回奇怪的保存/加载命令。答案真的是某种形式的消息传递吗?如果是这样,我应该在这里使用哪个 API?
我相信这是相关的:Accessing iframe from chrome extension
[编辑]
好的,所以我尝试了一些事情......
似乎预期的用途是将 iframe 的 html 内容托管在某处。考虑到它应该是本地的并且是扩展的一部分,有点奇怪。如果您想离线查看某些页面会发生什么?这很愚蠢,我将其视为一种选择。为什么要浪费资源来托管应该只在本地可用的东西。
另一种方法是提供侧边栏中的 HTML。请注意,此 HTML 不会放入 iframe 中。我喜欢 iframe 的想法,因为它使 CSS 和 JS 非常分离,因此页面和您的扩展程序之间的干扰最小。
所以我尝试通过
html
带有和 ID 的侧边栏属性创建一个 iframe,并在 100 毫秒延迟后使用myiframe.contentWindow.document.open/writeln/close()
. 这在 chrome 上运行良好,但在 Firefox 中失败并出现安全错误(The operation is insecure
onopen()
)。另一种方法是通过
src
url 提供 iframe 内容(对于侧边栏,我使用url
属性的数据地址):Html code as IFRAME source 而不是 URL。这在 Firefox 中有效,但在 chrome 中导致 CORS 错误:The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "data". Protocols must match.
和Warning: Blocked a frame with origin "http://localhost" from accessing a cross-origin frame. Function-name: appAPI.message.addListener
这些 CORS 问题让我觉得非常愚蠢。我所有的代码都来自同一个扩展,注入到同一个页面。没有发生交叉起源,我创造了该死的东西。如果我有能力改变原点,那么它首先是不安全的,所以为什么要打扰。
javascript - 如何通过单击我网站页面上的按钮来调用在 Crossrider“background.js”中声明的 javascript 函数?
如何通过单击我网站页面上的按钮来调用在 Crossrider“background.js”中声明的 javascript 函数?
我的网站页面“ http://www.mysite.com/default.aspx ”中有一个按钮输入。我还在Crossrider [一个跨浏览器扩展框架]“background.js”范围内定义了一个函数“myExtensionFunction”,它接受一个 javascript 对象/JSON 作为参数。是否可以通过单击我的网站页面中的按钮来传递 javascript 对象/JSON 作为参数并调用此函数,反之亦然?如果是这样,怎么做?如果不是,为什么?
我从下面的本教程中知道“如何将页面变量的值传递给扩展范围?”,但无法解决上述问题。 http://docs.crossrider.com/#!/guide/howto_get_page_variable
我尝试了下面的代码,但给了我警报“函数不存在!”,正如预期的那样,因为它找不到在 Crossrider 浏览器扩展 [extension.js 文件] 中定义的函数
javascript - Chrome 扩展内容脚本不会加载并且没有错误。没有任何。甚至没有一点
愚蠢地放错括号/大括号并导致整个内容脚本无法加载对我来说并不罕见。当这种情况发生时,任何地方都没有错误 - 控制台是空的。这发生在content.js
直接 chrome 扩展和 crossrider extension.js
(也在 chrome 中)。知道结果后,我知道我的文件中某处有问题,但手动查找它只是一种愚蠢愚蠢的调试方式。我发现缩小问题范围的唯一方法是......
创建一个临时 html 文件,直接包含内容脚本,等待显示该甜蜜行号。
将文件上传到 crossrider 的 Web 界面,并让其 JS 解析器向我显示错误所在的行。
以上是缓慢而繁琐的,需要用霰弹枪从棚子后面取出。
我在哪里可以让 chrome 告诉我1.内容脚本有问题2.我缺少哪一行甚至是哪种类型的括号?
crossrider - CrossRider:可以在弹出窗口中使用哪些库方法范围?
我已将数据保存在appAPI.db.async
数据库中。现在我想在弹出页面中显示它。这是我在弹出页面中的内容:
这没有给出预期的结果。我想知道的是在弹出页面内我可以使用什么?
另外,作为一个问题:如何从资源目录中的 HTML 页面打开浏览器选项卡,而不是在browserAction.onClick
处理程序中打开不会占用整个屏幕空间的弹出窗口?
类似的东西background.js
:
谢谢 (:->)
javascript - 安装 Crossrider 扩展的调试扩展失败 - Firefox
FF25.0,Fedora 18。
这只是一直在转圈。登台扩展安装,它的一部分是活动的,因为扩展修改了一些 dom(我认为即使是后台脚本也在运行,因为本地存储被初始化)。并非所有扩展都有效,例如侧边栏和其他应该在页面加载时运行的 dom 注入。但是 crossrider 中的调试模式页面无法识别正在运行的扩展。
我怀疑这是由于我的代码中的错误,但似乎没有办法调试它。当我注释掉侧边栏时,它在另一次安装后仍然短暂显示,这让我怀疑代理/缓存正在妨碍但在扩展 URL 上添加额外的 GET 参数并没有帮助。我试过添加debugger
到extension.js
. 控制台是空的。firebug 不会报告任何错误。该扩展在 chrome 中运行良好,我真的不想回到空白扩展并尝试一点一点添加,直到失败。必须有一种更简单的方法,例如让 firefox 只说“这是你的问题,就在第 X 行”。有任何想法吗?
[编辑]
打开一些调试选项后,我在控制台中遇到错误,但单击有问题的文件/行号只会打开“来源:...”窗口。在谷歌浏览器中,我在调试器中获取文件,可以在错误发生时打断点、刷新并捕获错误。更好的是,一个既有效又实际有效的“异常中断”选项怎么样。
[编辑]
我终于让浏览器调试器工作了。第一个错误是NS_ERROR_XPC_BAD_OP_ON_WN_PROTO
.
javascript - JavaScript 序列化图像(图标)
我正在 CrossRider 中构建一个扩展。我需要将图像/图标(我有它们的 url)保存在数据库中。它们是微小的图像,不会成为数据库中的问题。我可能有类似的东西可以访问background.js
:
而且我希望能够将该图像序列化到数据库(它是一个键/值数据库)并稍后反序列化并显示它。像 HTML5 这样的东西FileReader.readAsDataUrl()
会很好,但我不能使用那种方法,因为它似乎太依赖于表单。
谢谢([-|)。
cross-browser - crossrider 方法 appAPI.db.async 是否适用于 safari 浏览器?
我是crossrider中扩展开发的新手。我编写了一个非常简单的代码片段,它在 extension.js 中使用 appAPI.db.async 保存数据,然后在我们通过 browseraction.setPopup 创建的弹出窗口(本地文件)中检索 appAPI.db.async。
本地浏览器存储的保存和检索在 FF 和 chrome 中完美运行。但在野生动物园中不起作用。
我什至尝试了 appAPI.db 方法,但结果相同。
javascript - 在 Internet Explorer 中使用 window.load 函数
我想在目标页面上的所有内容都完成加载和渲染后运行一些代码。有人建议我使用 Window.load 函数,它在 Firefox 和 Chrome 中运行良好。我只是无法让它在 IE 中工作。还有另一种方法吗?
编辑:好的,这就是我所拥有的:
基本上在代码闪烁之前,我可以看到数据在页面加载时发生变化,所以我征求了一些建议,我得到的解决方案是将 body 样式设置为display:none
并使用 window.load 将其设置回阻止,一旦一切都完成加载。这在 Firefox 和 Chrome 中完美运行,但在 IE 中却不行。更改数据的实际代码在 IE 中工作。
javascript - Sending Data From background.js to extension.js in crossrider
I am developing a browser extension using crossrider. I have added a context menu (background.js)
On user click I want to send ContextData
to extension.js.
At extension.js some function will receive the data and send it to my server (A Rest API which will accept the data).
To send data to the server I have tested this and it works fine (code sample in extension.js)
How can I write a function to accept ContextData
from background.js
and assign it to dataToSend in extension.js?