问题标签 [safari-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 投票
3 回答
727 浏览

javascript - HTML 文本无法选择,但有一个 twich !不可删除

我知道-moz-user-select:无;-webkit-用户选择:无;-khtml-用户选择:无;它在我拥有的代码中运行良好。

但我想让我的 div也无法通过 Ctrl+A选择,上述指令似乎对此没有影响。

例如,如何在 Firefox 中禁用此选择?我希望能够防止使用 Ctrl+A 进行选择,这样 Del 键就不会删除文本。我想让文本不可删除。

非常感谢!

0 投票
1 回答
565 浏览

ajax - Safari 扩展程序可以保存 cookie 吗?

Safari 扩展是否可以在本地保存 cookie 而不是使用浏览器的 cookie?HTTPS ajax 请求引发登录弹出窗口的问题开始让我恼火。我知道如何使用 curl 和 perl/php 从命令行脚本登录 Google 服务。如果我可以将我的 cookie 保存在本地文件系统的某个位置,我就可以避免所有这些麻烦。

0 投票
2 回答
1347 浏览

safari-extension - Safari 扩展无法在选项卡中向 IFRAME 发送消息

我希望能够将消息从全局页面发送到在其中一个选项卡中的 IFRAME 内运行的内容脚本。我发现 Safari 扩展 API 可能有一个不允许这样做的设计疏忽。(与 Chrome 扩展 API 不同,后者对扩展的各个组件之间的消息传递提供更全面的支持)。

基本上,我有一个注入所有帧及其 IFRAME 的 injection.js。在 injection.js 中,我有以下内容用于从全局页面捕获消息:

在我的全局页面中,我有以下代码将消息广播到注入的脚本:

我发现消息只到达注入选项卡顶部框架的注入.js。消息永远不会到达那些注入子 IFRAME 的消息。

SafariWebPageProxy 类似乎只将消息发送到选项卡中的顶部框架,尽管注入的.js 脚本被注入到子 IFRAME 中,并且它们都注册了 safari.self 上的“消息”事件.

您知道如何将消息发送到子 IFRAME 中的注入脚本,并且 IFRAME 来自不同的域而不是顶层框架吗?

API 中的疏忽似乎是以下缺陷的组合:

(1) 通信基本上是基于广播者-用户的。没有像 Chrome 的 chrome.extension.sendRequest API 这样的基于点对点回调的通信通道;

(2) 如果广播发送到所有子 IFRAME,这会很好。然而,事实并非如此。SafariWebPageProxy.dispatchMessage() 仅将消息发送到顶部框架中的 injection.js。

有什么建议吗?

0 投票
0 回答
473 浏览

javascript - Safari 扩展程序可以在本地保存 cookie 吗?

有一个已知问题,即 webkit 浏览器在某些条件下会向您抛出带有 https 站点的登录弹出窗口。如果我的 cookie 不再有效,我会注意到它。

我有一个可以访问你的谷歌网站的扩展程序,但是这个登录提示是一个需要克服的问题。我可以通过 perl/php 和 libcurl 登录到 Goog 的站点,将所需的 cookie 保存到文本文件并继续。

Safari 扩展和 XHR 可以做同样的事情吗?我可以将 cookie 及其数据保存到内存或变量中吗?我可以在 XHR 请求中使用所述变量中的 cookie 数据吗?这可能会克服我的问题。

0 投票
1 回答
865 浏览

javascript - 检测程序是否从 javascript 安装

我正在为 firefox 开发附加组件或插件 (NPAPI)。

从扩展的 JavaScript 或 NPAPI 插件中检测是否安装了某个 Windows 程序的最佳方法是什么?

非常感谢!

注意:插件(插件)将由 NSIS 安装程序与 windows 程序一起安装。有没有办法让 Firefox-Addon(或 NPAPI 插件)与应用程序通信,所以如果它没有得到响应,这意味着程序没有安装?!

0 投票
2 回答
1234 浏览

macos - 是否可以为所有用户安装 Safari 扩展程序?

我正在寻找一种解决方案来从所有用户都可以使用的脚本安装扩展。你能建议点什么吗?

0 投票
2 回答
2366 浏览

applescript - 如何从命令行重新加载 Safari 扩展?

我需要从命令行“重新加载”一个 Safari 扩展(稍后还要构建包)。

如何才能做到这一点?

为什么?

我想一步构建——我的代码在 CoffeeScript 中,因此无论如何我都在编译它。

我尝试了什么?

除了绝望地谷歌搜索之外,我还尝试使用这个 AppleScript:

哪些错误:

系统事件出现错误:无法获取进程“Safari”的窗口“Extension Builder”的“重新加载”按钮。

而这种变化:

这不会给出错误,但实际上也没有做任何事情。

0 投票
2 回答
285 浏览

javascript - 当用户单击 safari 扩展的工具栏命令时获取键盘修饰符

当用户通过我的 safari 扩展程序的工具栏命令单击时,我想获得键盘修饰符(如 shift 或选项键)。

在全局 HTML 页面中,我有下一个代码:

是否可以?或者可能存在任何解决方法?

0 投票
1 回答
2108 浏览

safari-extension - Safari 扩展程序注入的内容应该如何工作?

这是一个令人费解的基本问题,Google 无法提供帮助。我有一个 Safari 扩展,它似乎可以在很多方面工作:我有一个证书,我有一个可以检查的全局页面,我添加了一个上下文菜单项,我有一个 javascript 文件,从全局页面,它接收选择上下文菜单项时触发的事件。

但是,如果我添加一个结束脚本或样式表,即使我已将扩展网站访问级别设置为全部,也不会发生任何事情。即使我卸载并重新安装扩展程序,和/或重新加载活动网站,也没什么。在注入的 javascript 中对 window.console.log() 的调用不会运行,脚本和 css 文件都不会出现在 Web 检查器的资源列表中,无论是资源还是脚本选项卡,什么都没有。

关于我可以做些什么来进一步调试这个问题的任何想法?

0 投票
1 回答
395 浏览

javascript - Safari 扩展上下文菜单图标和分隔符

我已经搜索过,似乎找不到将分隔项添加到我的 Safari 扩展程序上下文菜单或为我的扩展程序创建的常规菜单项添加自定义图标的方法。我的上下文菜单项与基于选择的动态文本一起正常工作,但我想用图标或分隔项(或两者)来区分菜单项,以将其与其他扩展的菜单项区分开来。在 Safari 扩展中,这些事情中的任何一个都可能吗?谢谢。