我已经编写了Chrome / Opera扩展程序并且考虑将其移植到Safari 。它需要2个特定的能力,缺少任何一个都会否决整个计划。
能够阅读HTTPS网址 - Chrome支持此功能,作为“标签”权限的一部分。 Firefox(最后我检查过)没有。
能够动态更改激活按钮的外观。 - 在Chrome中,可以通过在背景页面上放置一个画布(即按钮)来实现...
-body- -canvas id =“button_canvas”width =“19”height =“19” - - / canvas- - / body -
...然后在必要时动态更改它......
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。
答案 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';
}
}