Javascript 向Safari扩展添加复选框设置

Javascript 向Safari扩展添加复选框设置,javascript,safari,Javascript,Safari,我编写了这个扩展,它基本上改变了使用CSS和JS的网站外观。但现在我想在扩展中添加一些复选框设置,以便用户可以切换网站的功能 我试着阅读文档,并在网上搜索。甚至试图寻找我可以逆向工程的演示扩展,但都没有用 假设我想添加一个复选框,将其命名为边栏,并给它一个tg_边栏的键值。有人能解释一下我将如何为此添加一个事件侦听器,然后触发一些jquery代码吗 [我认为这是一个问题[http://stackoverflow.com/questions/3032945/safari-extension-how

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

我试着阅读文档,并在网上搜索。甚至试图寻找我可以逆向工程的演示扩展,但都没有用

假设我想添加一个复选框,将其命名为边栏,并给它一个tg_边栏的键值。有人能解释一下我将如何为此添加一个事件侦听器,然后触发一些jquery代码吗

[我认为这是一个问题[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类来替换该警报函数是行不通的

我也试着使用下面回答者的代码,但那没有任何作用。如果能够查看某个扩展的代码就太完美了


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

假设您在扩展中设置了该设置。 这很简单。每次在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
    }
}