Я полагаю, что вам нужно включить «событие» в качестве параметра в вашу функцию, чтобы оно выглядело так:
function numberChanged(event)
{
if(event.key == "number")
alert("Number has changed!");
}
однако, тем не менее, он не работает должным образом для меня (с параметром или без него), поэтому я могу ошибаться. Интересно, что каждый раз, когда я изменяю поле или нажимаю кнопку в этой форме переполнения стека, мое оповещение (аналогичное вашему) срабатывает, даже если я не менял настройки. совершенно странно.
обновление: Наконец-то все заработало. Пример, который дает Apple, просто неверен. Итак, ответ состоит из двух частей. Я дал первую часть выше - вам нужно добавить «событие» в качестве параметра для вашей функции. вторая часть заключается в том, что addeventlistener должен быть выполнен на объекте настроек, а не, как показывает Apple, с помощью «self» со страницы global.html. поэтому рабочий вызов для вас будет выглядеть так:
safari.extension.settings.addEventListener("change",numberChanged,false);