Safari扩展-如何响应设置更改?

Safari扩展-如何响应设置更改?,safari,safari-extension,Safari,Safari Extension,我目前正在为Safari 5开发一个扩展,我想在设置更改时运行一个侦听器函数。苹果提供了一个例子,但它不适合我。我当前在全局html文件中有此侦听器函数: function numberChanged() { if(event.key == "number") alert("Number has changed!"); } safari.self.addEventListener("change", numberChanged, false); 我希望有人能帮助

我目前正在为Safari 5开发一个扩展,我想在设置更改时运行一个侦听器函数。苹果提供了一个例子,但它不适合我。我当前在全局html文件中有此侦听器函数:

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

safari.self.addEventListener("change", numberChanged, false);

我希望有人能帮助我。有人知道我做错了什么吗?

我认为您需要将“事件”作为参数包含在函数中,因此它看起来如下所示:

function numberChanged(event) 
{
     if(event.key == "number")
         alert("Number has changed!");
}
然而,也就是说,它对我来说也不正常(有或没有param),所以我可能是错的。有趣的是,每次我更改字段或单击此stackoverflow表单上的按钮时,我的警报(与您的警报类似)都会触发,即使我没有更改设置。真奇怪

更新:我终于让它工作了。苹果提供的例子是错误的。所以答案有两个部分。我给出了上面的第一部分-您确实需要将“event”作为参数添加到函数中。第二部分是addeventlistener必须在settings对象上完成,而不是像apple显示的那样,使用global.html页面中的“self”。因此,您的工作电话如下所示:

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

我认为您需要将“event”作为参数包含在函数中,因此它看起来如下所示:

function numberChanged(event) 
{
     if(event.key == "number")
         alert("Number has changed!");
}
然而,也就是说,它对我来说也不正常(有或没有param),所以我可能是错的。有趣的是,每次我更改字段或单击此stackoverflow表单上的按钮时,我的警报(与您的警报类似)都会触发,即使我没有更改设置。真奇怪

更新:我终于让它工作了。苹果提供的例子是错误的。所以答案有两个部分。我给出了上面的第一部分-您确实需要将“event”作为参数添加到函数中。第二部分是addeventlistener必须在settings对象上完成,而不是像apple显示的那样,使用global.html页面中的“self”。因此,您的工作电话如下所示:

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