Обратный инжиниринг расширения Firefox - PullRequest
1 голос
/ 22 июля 2011

Я молодой разработчик и просто пробую свои силы в JavaScript впервые на этой неделе после того, как пришел из фона в Java.Я нашел хорошее дополнение для Firefox, которое позволяет пользователям копировать ссылки из выделенного текста.Он относительно небольшой, но я хотел бы попытаться настроить его так, чтобы он запускался с кнопки, а не (событие правого клика / выбора)

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Рассматриваемое расширение имеет открытый исходный код и лицензировано в соответствии с GNU General Public License,версия 2.0

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

Источник доступен здесь: https://addons.mozilla.org/en-US/firefox/files/browse/77730/ (он довольно маленький, всего одна банка, поэтому не бойтесь читать)

Вернемся к делу: это аккуратное маленькое дополнениеэто позволяет пользователям выбирать несколько ссылок на веб-странице и копировать / вставлять выбранные ссылки, щелкнув правой кнопкой мыши текст и выбрав копировать выбранные ссылки.

Итак, 2 части моего вопроса:

  1. Как запустить этот тип надстройки с помощью кнопки вместо щелчка правой кнопкой мыши?(Я предполагаю, что это как-то связано с функцией EOL)

  2. Что мне нужно знать при конвертации надстроек, кроме кросс-браузерной совместимости?Должен ли я обратиться к автору за помощью или это оскорбит?

Любая помощь приветствуется!

* *

Я уверенЯ передаю «правда», чтобы приветствовать без причины.Также довольно уверенно превращаю это в скрипт внутреннего типа. Моя небольшая попытка взять исходник и сделать из него что-то:

HTML:

<input type="button" id="grablinkstest" value="CopyLinks" onclick="welcome(true);"/>

JAVASCRIPT:

function welcome() {
    alert("welcome command works");
    var focusedWindow = document.commandDispatcher.focusedWindow;
    var focusedDoc = document.commandDispatcher.focusedWindow.document;
    var argc = gCopyLinks.GetLinks.arguments.length;
    var argv = gCopyLinks.GetLinks.arguments;
    var reMask;

    var selLinks = [];
    for( i = 0; i < focusedDoc.links.length; i++) {
        if((!bSelected || focusedWindow.getSelection().containsNode(focusedDoc.links[i], true)) && (argc <= 1 || focusedDoc.links[i].href.match(reMask))) {
            selLinks[j] = focusedDoc.links[i].href;
            j++;
        }
    }

}

1 Ответ

0 голосов
/ 27 сентября 2011

Как запустить этот тип надстройки с помощью кнопки вместо щелчка правой кнопкой мыши?(Я предполагаю, что это как-то связано с функцией EOL)

Нет, это не имеет ничего общего с функцией EOL - эта функция просто определяет последовательность символов конца строкидля используемой операционной системы.Наложение расширения вызывает gCopyLinks.OnCommand('all'), если щелкнуть его пункт меню, я думаю, вы хотите добавить кнопку, делающую то же самое.См. https://developer.mozilla.org/en/XUL_School/Adding_Toolbars_and_Toolbar_Buttons о добавлении кнопок панели инструментов в расширениях.

Что нужно знать при преобразовании надстроек, кроме кросс-браузерной совместимости?

Да.Расширения имеют особые привилегии, которых нет у веб-контента.В частности, в настоящее время нет API, позволяющего веб-приложениям копировать данные в буфер обмена.Тем не менее, один предлагается и работает над .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...