Safari扩展开发是否支持这两种功能?

时间:2014-04-28 14:19:47

标签: safari-extension

我已经编写了Chrome / Opera扩展程序并且考虑将其移植到Safari 。它需要2个特定的能力,缺少任何一个都会否决整个计划。

  1. 能够阅读HTTPS网址 - Chrome支持此功能,作为“标签”权限的一部分。 Firefox(最后我检查过)没有。

  2. 能够动态更改激活按钮的外观。 - 在Chrome中,可以通过在背景页面上放置一个画布(即按钮)来实现...

    -body- -canvas id =“button_canvas”width =“19”height =“19” - - / canvas- - / body -

  3. ...然后在必要时动态更改它......

    var canvas = document.getElementById("button_canvas");
    var context = canvas.getContext("2d");
    var imageData = context.getImageData(0, 0, 19, 19);
    // write stuff to the canvas
    context.putImageData(imageData, 0, 0);
    imageData = context.getImageData(0, 0, 19, 19);
    // key element below
    chrome.browserAction.setIcon({
       imageData: imageData
    });
    

    如果有人能在我在Craigslist上购买二手Mac之前明确回答这两个问题,我会很感激。谢谢!

    P.S。 FWIW,我自己的谷歌搜索表明#2在Safari中是不可能的。不知道#1。

1 个答案:

答案 0 :(得分:2)

我相信两者都有可能。

对于HTTPS网址:在Safari扩展程序构建器的扩展网站访问下,将访问级别设置为全部并勾选包含安全页面复选框。

要动态更改工具栏图标上显示的图标,请先在Safari扩展构建器中设置任何图标。然后,如果要更改以响应工具栏按钮,请单击:

safari.application.addEventListener('command', performCommand, false);

function performCommand(event) {
    if (event.command === 'changeIcon') {
        event.target.image = safari.extension.baseURI+'othericon.png';
    }
}

在其他情况下,您可以迭代工具栏按钮来修改所需的按钮:

var toolbarButtons = safari.extension.toolbarItems;
for (var i = 0; i < itemArray.length; ++i) {
    var item = toolbarButtons[i];
    if (item.identifier === "mybutton") {
        item.image = safari.extension.baseURI+'othericon.png';
    }
}