1

这是一个非常简单的使用 pageAction 的 Chrome 扩展程序。它评估当前 URL,如果 URL 匹配条件(实际位置),则在地址栏中放置一个图标,并在用户单击图标时将 URL(使用原始位置的位)更改为新位置。

构建 Chrome 扩展程序非常简单明了。文档很简单,Google 提供了一些可以修改和构建的代码示例。最后,CWS 易于部署和部署。

但是,我没有任何经验尝试在 FF 或 Safari 中做同样的事情。

有人可以给我一些代码示例和打包建议的指导吗?

谢谢!

背景.js

function checkForValidUrl(d, c, e) {
    if (c.status === "loading") {
        var b = e.url.split("/")[2];
        var a = e.url.split("/")[3];
        if (b === "www.somewhere.com" && a === "unfiled") {
            chrome.pageAction.show(d)
        }
    }
}
chrome.tabs.onUpdated.addListener(checkForValidUrl);
chrome.pageAction.onClicked.addListener(function (b) {
    var a = b.url.split("/")[4].split("+").slice(0, 1);
    chrome.tabs.update(b.id, {
        url: "http://www.somewhere.com/filed/" + a
    })
});

显现

{
  "name": "MyExtension",
  "version": "1.0",
  "description": "This is nifty",
  "background": { "scripts": ["background.js"] },
  "page_action" :
  {
    "default_icon" : "icon-19.png",
    "default_title" : "Click to do your stuff"
  },
  "permissions" : [
    "tabs"
  ],
  "icons" : {
    "48" : "icon-48.png",
    "128" : "icon-128.png"
  },
  "manifest_version": 2
}
4

1 回答 1

2

此答案仅适用于 Safari。

对于这个扩展的 Safari 版本,你需要的原材料是:

  • “全局”HTML 页面(Safari 相当于 Chrome 扩展程序的背景页面)
  • 在全局页面上运行的脚本,作为内联<script>文件或 .js 文件提供
  • 工具栏按钮的图标,在 Safari 扩展用语中称为“工具栏项”

使用 Extension Builder 创建新的空扩展后,在扩展的文件夹中创建上述文件或将它们移动到扩展文件夹中。在 Extension Builder 中,选择您的全局页面。创建一个工具栏项,给它一个标签和一个标识符,然后选择工具栏按钮图像。您还需要为工具栏项指定一个命令;只需输入任何字符串,例如“munge-url”。

在您的全局脚本中,您将为“命令”事件添加一个侦听器,当用户单击您的工具栏按钮时,Safari 会将其发送到全局页面。监听函数会读取当前选项卡的 URL,将其删除,并将选项卡的 URL 设置为已删除的选项卡。像这样:

safari.application.addEventListener('command', function (evt) {
    if (evt.command == 'munge-url') {
        var currentTab = safari.application.activeBrowserWindow.activeTab;
        var oldUrl = currentTab.url;
        var newUrl = mungeUrl(oldUrl);
        currentTab.url = newUrl;
    }
}, false);

当然,mungeUrl需要定义函数。

应该是这样的。如果你想变得花哨,你可以添加代码,根据当前选项卡的 URL 禁用或启用工具栏按钮;为此,您将需要一个“验证”事件的侦听器,该事件在 Safari 扩展开发指南的此页面上进行了讨论。

于 2013-11-04T21:39:32.347 回答