问题标签 [microsoft-edge-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.
microsoft-edge - 边缘模块导入或导出意外
我使用 Microsoft Edge Extension Tookit 将 Chrome 扩展移植到 Microsoft Edge。
当我在 Edge 中加载扩展时,控制台会向我发送一个错误:
SCRIPT1086:SCRIPT1086:模块导入或导出语句在此处意外
它指向源代码 (background.js) 的第一条语句,如下所示:
ClientManager 是 services 子目录中的一个类:
所以我不知道这有什么问题,我使用的是最新版本的 Edge(不是内部人员)
微软边缘 41.16299.15.0
微软 EdgeHTML 16.16299
编辑:问题解决了。显然,Edge 扩展转换器工具没有保存更新的清单文件,我只是从该工具复制并粘贴清单,现在它可以工作了。
uwp - Edge Extension Native Messaging:如果没有响应发送回 Edge 浏览器/扩展,UWP 应用程序将关闭
来自 Edge 浏览器的每个请求都需要发送相应的响应。如果不是,则伴随的 UWP(以及关联的 Win32 应用程序,如果有)退出并引用“SystemPolicy”作为原因。为了说明问题,我可以参考SecureInput示例。
通过注释掉调用“SendResponseAsync(...)”的行,UWP 和 Win32 应用程序(PasswordInputProtection.exe) 将退出,因为使用 SystemPolicy 原因调用了“OnAppServicesCanceled(...)”处理程序。
我知道对于这个特定的示例,不发回响应是没有意义的。但是我有不需要向边缘扩展发送回响应的情况。相反,我打算使用 Win32 应用程序中的 SendMessageAsync(...) 通过 UWP 应用程序与扩展程序通信。
此外,我注意到我在网上找到的本机消息传递示例至少会从 UWP 将无用的 ACK 消息发送回扩展程序。那么,是设计需要发送响应还是我在这里遗漏了什么?
javascript - 无法确定此 Javascript“for - of”循环中的错误原因
这是 Edge 调试器窗口的屏幕截图。代码没有运行,但正如您所见,调试器窗口中有一些红色的小波浪线;解释器/编译器/whatsit 不高兴,但没有迹象表明它特别不喜欢什么。输出窗口很清晰,没有“悬停提示”,也没有我能找到的任何其他解释。
这实际上是MDN 文档中示例的直接副本。
非常感谢任何指导。
javascript - browser.tabs.update() 是否触发 browser.webRequest.onBeforeSendHeaders 事件?
我正在为 Microsoft Edge 开发 Web 扩展;我的浏览器使用的是 EdgeHTML 14.14393。
我正在尝试更改User-Agent
以下代码中的字符串:
该browser.tabs.update()
调用按预期打开了新的 URL,但是当我在函数的第一行放置断点时rewriteUserAgentHeader
,它永远不会命中。我只能假设:
- 我做错了(很可能)或
update
通话不会onBeforeSendHeaders
触发。
更新
我发现host permission
我的manifest.json
文件中丢失了 - 这是我更新的permissions
部分:
...但是,在 MudVille 中仍然没有乐趣;我对照明的追求仍在继续。我在事件处理程序中的断点从未命中。一如既往,非常感谢任何帮助。
google-chrome-extension - 访问 UWP 应用程序的 Chrome 扩展程序?
我们有 chrome 和 FF 扩展,可与本机消息传递应用程序一起使用。最近我们开发了边缘扩展和一个以相同方式工作的 UWP 应用程序。现在,如果用户想要使用任何 chrome/FF/Edge 浏览器,他们必须安装两个独立的本地消息传递应用程序。我的问题是,Chrome/FF 扩展是否可以与 Windows UWP 应用程序对话?
google-chrome-extension - chrome 在 Microsoft Edge 扩展中未定义
美好的一天,我写了一个扩展,我想在每个平台/浏览器上运行。它适用于 chrome 和 firefox,但在 windows 10 上使用 ie-edge 时出现错误。它不断抛出 chrome 未定义。有没有办法让它像我在扩展中一直使用的那样定义。
谢谢
uwp - Edge Extension Native Messaging:处理 UWP 消息大小限制
我正在为 Edge 开发一个扩展,我需要从 UWP 向扩展发送超过 1MB 的数据。
我已将数据分块小于 1MB,并尝试多次发送回复,如下所示
在上述循环中发送第二个响应时,应用服务被取消。似乎只有在有相应请求的情况下才能发送响应。有人可以证实这一点吗?
UWP 中是否有任何替代机制可以在没有请求的情况下异步发送数据?
我能想到的另一个选择是将分块逻辑移到后台,但感觉不对。
FWIW、Chrome 和 Firefox 没有这样的限制,我可以将消息异步发送到标准输出。
更新#1:彼得,我担心第二个 sendReply 收到相同的错误“在意外时间调用了一个方法”。我尝试了以下方法,希望这就是您的意思。
c# - MS Edge:进程内本机消息传递
除了阅读本文档外,我还尝试为本地消息传递实现 Edge-Browser 扩展,以使用Windows.System.Launcher.LaunchFileAsync
.
我明确不尝试使用后台任务通过 AppService 实现扩展,因为我需要确保在主 UI 线程上执行 LaunchFileAsync。因此,我想OnBackgroundActiviated
直接在主应用程序组件上使用。
上面提到的文档说,将基于应用服务的扩展转换为进程内扩展是通过从包清单中的应用程序标记中删除“EntryPoint”属性来完成的。但是,按照此描述,Visual Studio 2017 会引发无法注册扩展的错误(DEP0700, 0x80073CF6 windows.appService: Element not found
)。
向 AppService 标记添加EntryPoint
属性会导致此错误消息消失,但我无法OnBackgroundActivated
触发。
这是我的包清单:
你能指出这个清单文件的潜在问题吗?应用程序类App
在 File中实现,App.xaml.cs
也实现OnBackgroundActivated
了,代码如下:
在后台脚本中,我使用与EdgeExtensionRuntime
清单文件中相同的名称连接到扩展:
显然,这似乎不起作用(即使EntryPoint
添加到扩展标签),因为我确实在扩展背景页面日志中立即“断开连接”。
我看不出问题出在哪里,而且关于这方面的 MS 文档很差。
c# - Edge:进程内本机扩展和 Windows.System.Launcher.LaunchFileAsync
我已经使用此处描述的进程内机制开发了一个边缘浏览器扩展(本机消息传递)(通过激活OnBackgroundActivated
)。在已建立的应用程序服务连接OnBackgroundActivated
中,或者更具体地说OnAppServiceRequestReceived
,我正在尝试调用Windows.System.Launcher.LaunchFileAsync(IStorageFile)
. 这似乎不会在 UI-Thread 上发生(尽管它确实在调试模式下工作并附加了调试器)。
我面临的问题是,应用程序是无头的,因此没有CoreWindow.GetForCurrentThread().Dispatcher
,我也无法从Window.Current
.
即使在发布模式或没有附加调试器的情况下,如何强制LaunchFileAsync
在 UI-Thread 上执行?
我知道我可以简单地执行以下操作:
但我的问题是Dispatcher
在 Application-Class 和OnAppServiceRequestReceived
.
如何做到这一点?甚至有可能还是我需要一个完全信任的 Win32 桌面网桥?
即使使用
没有附加调试器就无法工作。我很好奇在没有 Win32 桌面桥的无头 UWP 应用程序中是否可以调用 LaunchFileAsync。
google-chrome-extension - WebExtension:如何从网页向后台脚本发送消息?
我已经阅读了大量的文章,并且我在附近说,我想做的事情是不可能的。但也许我忽略了一篇带有解决方案的文章。
我们有一个用于 Intranet 解决方案的 webclient,它没有绑定到我知道的域。我们的客户在他们的服务器上安装 webclient 并给他一个他们在公司中喜欢的域。
现在我们想开发一个 WebExtension 以在文件系统和其他系统机制上有更多的可能性。我们不想用这个 WebExtension 来操作 webclient。webclient 应该向 WebExtension 发送带有命令的消息并且它们应该被处理。
我找到的唯一解决方案是。WebClient -> content_scripts -> background_scripts。content_scripts 可以将消息转发到 background_scripts。问题是,content_scripts 必须匹配一个域,而我们不知道我们的客户安装 webclient 的域
是否可以发送类似的消息
直接从网页脚本到 WebExtension?也许如果有人知道 WebExtension 的唯一 ID?或者对于不知道网页运行的域的问题是否有其他解决方案?
谢谢勒内