Как собрать расширение для Maxthon? Шаг 3: Скрипты

  • "Как собрать собственное расширение для Maxthon" – это простое пошаговое руководство для пользователей MX, которым не удалось найти нужный аддон в Extensions Center. Я почти уверен, что абсолютно любой пользователь сможет собрать удобное расширение под свои нужны. Простейшие макстоновские расширения собрать гораздо проще, чем, скажем, ранние расширения для Chrome или аддоны боковой панели Opera. Начнём?



Как сделать собственное расширение для Maxthon?
Шаг 3: Скрипты

Продолжаем разговор о том, как собрать собственное расширение для Maxthon. Мы уже знаем, как сделать аддон боковой панели, как добавить кнопку на панель инструментов и как добавить в расширение букмарклет. Ну а сегодня мы переходим к скриптам. И если вы не из тех, кто привык пропускать «предыдущие серии», всё будет довольно просто!

Что мы знаем о букмарклетах? Это такие скрипты, которые запускаются по клику (об этом мы уже говорили, причём ни один раз). Теперь же у нас на очереди скрипты, которые будут запускаться без нашего участия. Если вы тут впервые, обратите внимание на оглавление в начале заметки: там вас ждут ссылки на старые записи. Ходить кругами мы не будем!

В качестве примера я выбрал скрипт от Xiao. Скорее всего, вы уже заметили, что в Instagram не работает средняя кнопка мыши. Иногда это дико бесит! К счастью, есть скрипт, который возвращает сайту привычный функционал. Из него мы и сделаем наше расширение. По функционалу оно будет почти полностью повторять аналогичное расширения для Maxthon. Разница лишь в том, что пока мы не станем добавлять информацию о разработчике, скрипте и о том, как использовать скрипт без расширения. Об этом мы тоже поговорим, но уже в следующей части. Начнём?

1. Создаём папку Middle-click for Instagram

2. Внутри неё создаём ещё одну папку  icons

3. В папку icons добавляем иконки icon_16.png, icon._32.png и icon_48.png

4. Переходим к def.json:
[
 {
   "author": "Xiao"
   "website": "https://greasyfork.org/users/5802"
   "date": "10.01.2016",
   "type":"extension",
   "frameworkVersion":"1.0.0",
   "version":"1.0.1",
   "guid": "{EEF9EC3E-C7AE-42A0-A1B6-7118A32AD36E}",
   "name": "Средняя кнопка для Instagram"
   "icon": "icon",
   "title": {"ru-ru": "Средняя кнопка для Instagram"},
   "description": {"ru-ru": "Клик колёсиком, чтобы открыть новую вкладку"},

Это описание нашего расширения. На этом этапе вопросов у вас быть не должно. Но если они всё-таки появились, вернитесь на несколько шагов назад и перечитайте старые записи!
   "actions": [
               {
                 "type": "script",
                 "entryPoints": ["doc_end"],
                 "include": ["*.instagram.com", "instagram.com"],
                 "js": ["script.js"],
               }
             ]

Параметр "entryPoints" в данном случае отвечает за запуск. Раньше наши расширения запускались по клику, и в графе "entryPoints" мы указывали только расположение кнопки ("sidebar" или "toolbar"). Пришло время отказаться от кнопок! При соблюдении некоторых условий (в данном случае – на указанном сайте) скрипт будет запускаться автоматически. Но когда именно?
  • "doc_start" запускает скрипт, когда страница только начинает загружаться (этот параметр может быть недоступен в ретро-режиме)
  • "doc_end" запускает скрип, когда сама страница уже загружена, но до загрузки изображений и остального контента
  • "doc_onload" запускает скрипт, когда страница полностью загружена (этот параметр также может быть недоступен в ретро-режиме)

Какой "entryPoint" использовать? Зависит от обстоятельств. Если нужно, чтобы скрипт запускался сразу, используйте "doc_start". Если скорость загрузки страницы важнее, чем мгновенный запуск скрипта, используйте "doc_end" или "doc_onload". И не забывайте о совместимости: не все скрипты совместимы с движком Trident, так что если хотите, чтобы ваше расширение работало и в Ретро-режиме, используйте соответствующий параметр запуска. К тому же иногда скрипт просто отказывается работать с определенным параметром запуска, так что экспериментируйте! По моему опыту "don_end" подходит гораздо чаще.

Мы, кстати, почти закончили. Не забудьте закрыть скобки и сохранить файл def.json:
  }
]

5. Теперь скрипт! Его мы просто скопируем со страницы на GreasyFork:
// ==UserScript==
// @name         Instagram: middle-click to new tab
// @description   Allows you to open links in new tabs by middle clicking
// @include      *://www.instagram.com/*
// @version      1.01
// @grant        none
// @namespace https://greasyfork.org/users/5802
// ==/UserScript==
window.addEventListener('click', function(e){
 if(e.button == 1 || (e.button == 0 && e.ctrlKey)){
  e.stopPropagation();
 }
}, true);

Сохраняем как script.js
  • NB: В данном случае большую часть скрипта занимает его описание. В теории от описания можно вообще отказаться. Однако постарайтесь проявить уважение к автору. Несколько килобайт того не стоят!

6. Готово! Осталось только упаковать папку Middle-click for Instagram в .mxaddon и установить расширение.

*   *   *

Несколько слов о том, где найти скрипты

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

И не забывайте о том, что разработчики довольно часто выкладывают скрипты на своих сайтах. Так поступают, например, SaveFrome.Net и Sebaro. Свежие версии скриптов сперва появляются на официальных сайтах, а уже поом публикуются на сторонних ресурсах.

Если перед тем, как начать работу над расширением, вы хотите сперва убедиться в том, что скрипт действительно способен работать в Maxthon, вам понадобится расширение ViolentMonkey. Если с ним скрипт запустится, есть шанс, что и в виде .mxaddon он тоже будет работать. Но всё-таки Maxthon  уж слишком специфический браузер, и иногда некоторые скрипты, работающие с ViolentMonkey, отказываются запускаться в виде отдельного расширения.

*   *   *

P.S.

Если ваше расширение не работает, сообщите. Эти аддоны я не собирал и не тестировал, я просто написал пошаговую инструкцию с простыми примерами. Так что я мог наделать кучу глупых ошибок и за все эти годы так их и не заметить.​

За сим всё...
Рассказать друзьям через AddThis или Shareaholic
Translate via GoogleYandexBing or Promt
Другие публикации о Maxthon
Оригинальный гайд
The same in English

Комментарии

Популярные сообщения