Добавление настроек флажка в расширение Safari - PullRequest
1 голос
/ 21 ноября 2010

Я написал это расширение, которое в основном меняет внешний вид сайта с использованием CSS и JS. Но теперь я хочу добавить некоторые настройки флажка для расширения, чтобы пользователи могли переключать функции веб-сайта.

Я пытался читать документацию и искал по всей сети. Даже пытался искать демо-расширения, которые я мог бы перепроектировать, но безрезультатно.

Допустим, я хочу добавить «флажок», озаглавить его «боковой панелью» и присвоить ему значение «ключа» «tg_sidebar». Может кто-нибудь объяснить, как я добавил бы для этого прослушиватель событий, а затем вызвал бы некоторый код jquery?

[Я думаю, что этот запрос StackOverflow [/2887142/rasshirenie-safari-kak-reagirovat-na-izmeneniya-nastroek] проясняет ситуацию, но все же мало что объясняет.]

Вот одна вещь, которая сработала.

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

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

[Снимок экрана окна «Настройки расширений»: http://dznr.org/56wi]

Теперь, когда я переключаю настройку, я получаю сообщение об ошибке. Но замена этой функции оповещения, скажем, добавлением или удалением класса CSS не работает.

Я также пытался использовать код от ответчика ниже, но это ничего не делает. Было бы идеально, если бы можно было посмотреть на код какого-то расширения ...

Еще одна вещь, если неясно, что настройка должна сделать изменение постоянным. То есть, когда параметр отмечен, он должен выполнять это действие каждый раз, когда загружается страница.

1 Ответ

0 голосов
/ 21 ноября 2010

Предполагается, что он настроен в ваших расширениях.Это довольно просто.Каждый раз, когда ваша функция вызывается в вашем 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 добавляет:* и

function handleMessage(event){
    if (event.name === "type") {
//run code
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...