我编写了这个扩展,它基本上使用 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/