Расширение Safari - Как реагировать на изменения настроек? - PullRequest
0 голосов
/ 13 июня 2010

В настоящее время я работаю над расширением для Safari 5 и хочу запускать функцию прослушивания всякий раз, когда вносятся изменения в настройки. Apple предоставляет пример для этого, но это не работает для меня. В настоящее время у меня есть эта функция слушателя в моем глобальном HTML-файле:

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

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

Я надеюсь, что кто-нибудь может мне помочь. Кто-нибудь знает, что я делаю не так?

1 Ответ

4 голосов
/ 13 июня 2010

Я полагаю, что вам нужно включить «событие» в качестве параметра в вашу функцию, чтобы оно выглядело так:

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

однако, тем не менее, он не работает должным образом для меня (с параметром или без него), поэтому я могу ошибаться. Интересно, что каждый раз, когда я изменяю поле или нажимаю кнопку в этой форме переполнения стека, мое оповещение (аналогичное вашему) срабатывает, даже если я не менял настройки. совершенно странно.

обновление: Наконец-то все заработало. Пример, который дает Apple, просто неверен. Итак, ответ состоит из двух частей. Я дал первую часть выше - вам нужно добавить «событие» в качестве параметра для вашей функции. вторая часть заключается в том, что addeventlistener должен быть выполнен на объекте настроек, а не, как показывает Apple, с помощью «self» со страницы global.html. поэтому рабочий вызов для вас будет выглядеть так:

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