将复选框设置添加到Safari扩展程序

时间:2010-11-21 09:14:48

标签: javascript safari

我写了这个扩展,基本上改变了使用CSS和JS的网站外观。但现在我想为扩展程序添加一些复选框设置,以便用户可以切换网站的功能。

我尝试阅读文档,并在网上搜索。甚至试图寻找我可以逆向工程的演示扩展,但无济于事。

假设我想添加一个“复选框”,将其标题为“侧边栏”并将其设为“关键”值“tg_sidebar”。有人可以解释我如何为此添加一个事件监听器,然后触发一些jquery代码吗?

[我认为这个StackOverflow查询[http://stackoverflow.com/questions/3032945/safari-extension-how-to-respond-to-settings-changes]清楚地说明了一点,但它仍然没有解释太多]

这是有用的一件事。

function numberChanged(event) 
{
         if(event.key == "tg_sidebar")
             alert("Number has changed!");
    }

    safari.extension.settings.addEventListener("change",numberChanged,false);

[扩展设置窗口的屏幕截图:http://dznr.org/56wi]

现在每当我切换设置时,都会出错。但是,添加或删除CSS类替换该警报功能不起作用。

我也试过使用下面的回答者的代码,但这没有做任何事情。能够查看某些扩展的代码本来是完美的...

还有一件事,如果不清楚的话,设置应该使更改成为永久性的。也就是说,当勾选设置时,它应该在每次加载页面时执行该操作。

1 个答案:

答案 0 :(得分:0)

假设您在扩展程序中设置了它。 这很简单。每次在global.html中调用函数时都会调用:

    var type = safari.extension.settings.yourSettingsCall;

示例:

var type;
        function performCommand(event)
    {
        if (event.command === "start-event") {
            type = safari.extension.settings.tg_sidebar;
}
    safari.application.activeBrowserWindow.activeTab.page.dispatchMessage("type", type);
        }

然后你的inject.js添加这些:

safari.self.addEventListener("message", handleMessage, false);

function handleMessage(event){
    if (event.name === "type") {
//run code
    }
}