问题标签 [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 投票
1 回答
3216 浏览

javascript - Safari 扩展中带有特殊字符的 XMLHttpRequest 不起作用

我正在尝试对 Safari 进行扩展,以使用http://myphotodiary.com的 API 进行身份验证。它适用于所有不包含特殊字符的密码,例如:

å,ä,ö 和空间

我现在有以下代码工作:

此代码适用于所有不包含特殊字符的密码,但如果我将登录信息更改为

它开始失败。

这个确切的代码在 Safari 中有效,但当我把它放在扩展程序中时就不行了。

我也尝试过内置身份验证的 xmlHttpRequest.open

结果相同。

这是我的全球页面的负责人:

我收到“加载资源失败:已取消”,这些是 Safari 发送的标头:

0 投票
1 回答
1665 浏览

html - 如何创建与 Safari-5 扩展绑定的本地 JavaScript 数据库?

我一直在尝试创建一个小型 safari 扩展,主要是为了好玩,看看你能做什么等。

无论如何,我正在考虑在本地数据库中存储我的扩展的一些数据,所以我总是会在我需要的地方,跨页面加载。

我在谷歌上搜索了一下,从 Safari 参考库中找到了这个片段,它将创建一个 JavaScript 数据库:

这工作得很好,并像我想要的那样创建数据库。唯一的问题是,这个数据库是特定于域的,所以我创建数据库的脚本将为访问的每个域创建一个数据库,这并不是我想要的。

那么,如果可能的话,如何创建一个本地存储数据库,将其分配给一个 safari 扩展程序,以便在所有域上都可用?

0 投票
1 回答
407 浏览

javascript - Javascript XMLHttpRequest 登录提示

我是 javascript 新手,写了一个简单的扩展来解析 gmail atom 提要并显示未读电子邮件的数量。

我的问题是,如果由于某种原因你没有登录到你的谷歌帐户,扩展程序会尝试检查提要,Safari 会显示一个这样的登录框。

替代文字 http://img576.imageshack.us/img576/743/loginhd.png

而且由于我每 10 秒检查一次,这些提示会堆积起来并将浏览器劫持到您无法登录的地步。通过此提示登录似乎也无济于事。

无论如何都可以忽略读取提要的失败尝试?我的请求如下所示:

0 投票
1 回答
2653 浏览

safari - Safari 扩展,流畅的应用程序

为 Safari 编写了一个简单的扩展程序,它捕获对地址栏中 RSS 按钮的点击(对 feed:// 协议的调用)并重定向到 Google Reader 而不是 Safari 的 feed 阅读器。但是,如果用户将 Fluid 应用程序(打开 Google 阅读器的应用程序)设置为他们的默认提要阅读器,则拦截不起作用

是否有任何已知的方法来捕获发送到不同应用程序的请求?扩展程序当前键document.beforeload(),但如果文档是在新的“应用程序”中打开的,它当然永远不会到达。

我可以捕捉到不同的事件吗?我还没有找到扩展可以捕获的事件的完整列表。

谢谢。

0 投票
2 回答
2516 浏览

javascript - Safari 扩展多次运行注入的 javascript

我已经从 Apple Developer 网站上的以下示例中复制了代码。

https://developer.apple.com/library/content/documentation/Tools/Conceptual/SafariExtensionGuide/MessagesandProxies/MessagesandProxies.html#//apple_ref/doc/uid/TP40009977-CH14-SW1

当我运行扩展程序时,它运行正常,除了注入的脚本运行 3 次导致输出被写入 console.log 3 次。我还在 doBigCalc 函数中添加了一个警报,它打开了 3 个警报。

为什么会发生这种情况/它应该发生吗?

0 投票
1 回答
405 浏览

macos - Safari 扩展文件的 UTTypeIdentifier 是什么?.safariextz

您知道,例如com.apple.safari.bookmarkSafari 书签或com.apple.ical.icsiCal 日历。

谢谢。

0 投票
2 回答
1250 浏览

safari - 多次执行的注入脚本

我已阅读文档并了解这是可以预期的:

脚本被注入顶级页面和任何具有 HTML 源的子页面,例如 iframe。不要假设每个浏览器选项卡只有一个脚本实例。

不过,我想知道:

  1. 除了 iframe,还有哪些其他元素具有“HTML 源”(图像?对象?)?“HTML 源代码”这个词在我听来含糊不清。
  2. 有没有办法检测哪个元素正在执行脚本?

我已经按照建议通过确定 过滤掉了 iframe window === window.top,但是其他元素仍在执行脚本,并且执行的次数比我想要的要多得多。

谢谢。

0 投票
1 回答
1358 浏览

javascript - 访问窗口历史对象中的 URL

有什么方法可以随机访问HistorySafari 中 Javascript 对象中的 URL?我正在编写一个扩展,我需要在特定格式的页面请求中捕获前一页的 URL。据我所知,History对象定义在浏览器中是非标准的。Safari 似乎只公开了它的属性和在历史中实际移动length的标准方法。在其他实现公开,和属性的地方,我看不到任何告诉我 Safari 也这样做的东西。currentpreviousnext

我也试过document.referrer,但在这种情况下似乎没有填充。

我只需要在给定页面上显示以前访问过的 URL。有没有其他方法可以访问该 URL?

谢谢。

0 投票
2 回答
1813 浏览

javascript - Safari 扩展中的同步消息传递

我正在开发一个 safari 扩展,我想知道是否有办法在 safari 扩展中进行同步消息传递。

我想从我注入的 javascript 向全局页面发送一条消息,让注入的 javascript 等到返回结果。必须将我的代码拆分为另一个从全局页面接收消息的函数似乎过于复杂。

0 投票
1 回答
921 浏览

safari - 页面加载前重定向

我有一个注入脚本——一个启动脚本——其最终目标是重定向到不同的 URL。该注入脚本需要访问扩展设置,因此它会向全局 HTML 文件发送消息。safari.application.activeBrowserWindow.activeTab.url该全局文件检查设置并通过设置属性重定向到适当的 URL 。

我发现通常情况下,临时页面加载首先会导致烦人的用户体验,最坏的情况是引入错误。我假设这是消息传递的异步性质的结果,但我无法找到阻止它的方法。

有什么方法可以防止默认行为(加载最初请求的页面),同时仍然从扩展设置中读取?

谢谢。