javascript - 将复选框设置添加到 Safari 扩展

标签 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 类来替换该警报功能是行不通的。

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

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

最佳答案

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

关于javascript - 将复选框设置添加到 Safari 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4237156/

相关文章:

javascript - js onclick事件不适用于td元素

ios - 谁是 iOS 和桌面版 Safari 的位置服务提供商

javascript - 这个正则表达式有什么问题 - 与不情愿的量词有关吗?

iOS 8 分享扩展 Safari 图片

javascript - 除非打开 Web 检查器,否则 Safari 上的 HTML5 Progress 元素不会更改值

javascript - jQuery 序列化时出现 Safari JSON 错误

macos - 使用 AppleScript 从 Safari 保存打开网页的源代码

javascript - 使用 Javascript 的动画图像

javascript - 从滚动位置更改覆盖不透明度

javascript - 为什么计算的日期在 Internet Explorer 和 Chrome 中不同?