Создать APK бесплатно

Оболочка приложения и навигация

Умные пользовательские скрипты

Скрипты для отдельных сайтов с сопоставлением URL и выбором момента запуска (как в Greasemonkey)

1Что такое умные пользовательские скрипты?#

Умные пользовательские скрипты — это отдельные именованные скрипты, у каждого из которых свои:
🌐 шаблоны URL (на каких страницах запускать)
⏱ момент запуска (до, во время или после загрузки)
✅ переключатель «Включить/Выключить»

Они работают как Greasemonkey или Tampermonkey в браузерах на компьютере, но встроены прямо в ваше приложение.

✅ Отлично подходит для:

  • Автовход ТОЛЬКО на странице /login
  • Скрывать рекламу ТОЛЬКО на страницах статей (https://news.com/article/*)
  • Отслеживайте изменения DOM с помощью MutationObserver
  • Внедрять до отрисовки страницы (document-start), чтобы избежать вспышки

Главное отличие от быстрого внедрения:
Быстрое внедрение = один и тот же CSS/JS на ВСЕХ страницах
Умные пользовательские скрипты = управление для каждого скрипта, каждого URL и момента запуска

2Где это найти#

Шаг 4 (Разрешения) → прокрутите вниз → карточка 🤖 Умные пользовательские скрипты.

Нажмите «+ Добавить», чтобы создать новый скрипт. У каждого скрипта есть:

  • Название — отображается в списке менеджера
  • Шаблоны URL — по одному в строке (поддерживается подстановочный знак *)
  • Момент запуска — document-end / document-start / document-idle
  • Код — ваш JavaScript
  • Переключатель «Включено»

Нажмите на любую строку, чтобы изменить или удалить скрипт.

3Примеры шаблонов URL#

Шаблоны определяют, на каких страницах запускается скрипт. Используйте * как подстановочный знак:

# Run on every page of every site
*://*/*

# Run only on example.com (any path)
https://example.com/*

# Run on ALL pages of ANY .com domain
https://*.com/*

# Run only on the /login path
https://example.com/login
https://example.com/login/*

# Run on news article pages
https://news.example.com/article/*

4Момент запуска: объяснение#

  • document-end (по умолчанию)

Запускается ПОСЛЕ завершения загрузки страницы. Безопасно и наиболее совместимо. Подходит для скрытия элементов, добавления кнопок, отслеживания.

  • document-start ⚡ (расширенный)

Запускается ДО отрисовки страницы. Внедряет скрипт в исходный HTML через shouldInterceptRequest. Удаляет заголовки CSP. Подходит для CSS тёмной темы или принудительной настройки viewport до отрисовки макета.

  • document-idle ⏱

Запускается через 1,5 секунды после загрузки страницы. Подходит для контента AJAX, который подгружается поздно, или окон, появляющихся с задержкой.

5Пример 1: автоматический вход только на /login#

Совпадение: https://myapp.com/login
Запуск: document-end

// Auto-fill login form
(function() {
  var email = document.querySelector('input[type=email], input[name=email]');
  var pass  = document.querySelector('input[type=password]');
  if (email) email.value = '[email protected]';
  if (pass)  pass.value  = 'mypassword';
  // Uncomment to auto-submit:
  // var form = document.querySelector('form');
  // if (form) form.submit();
})();

6Пример 2: скрыть платные стены на страницах статей#

Совпадение: https://news.site.com/article/*
Запуск: document-end

// Hide paywall overlay and restore scroll
(function() {
  var overlay = document.querySelector('.paywall-overlay, .metered-content, #paywall');
  if (overlay) overlay.remove();
  document.body.style.overflow = 'auto';
  document.documentElement.style.overflow = 'auto';
})();

7Пример 3: отслеживание динамического контента (MutationObserver)#

Совпадение: *://*/*
Запуск: document-end
Для элементов, которые появляются ПОСЛЕ загрузки страницы (отложенно загружаемые окна, реклама):

// Remove any modal/popup that appears dynamically
(function() {
  var sel = '.modal, .popup, .overlay, [class*="modal"], [class*="popup"]';
  // Remove existing ones first
  document.querySelectorAll(sel).forEach(function(el) { el.remove(); });
  // Watch for new ones
  var obs = new MutationObserver(function() {
    document.querySelectorAll(sel).forEach(function(el) { el.remove(); });
  });
  obs.observe(document.body, { childList: true, subtree: true });
  // Stop watching after 30 s to save battery
  setTimeout(function() { obs.disconnect(); }, 30000);
})();

8Пример 4: принудительная тёмная тема до отрисовки (document-start)#

Совпадение: *://*/*
Запуск: document-start
Внедряет CSS до отрисовки страницы — без белой вспышки:

// Inject dark theme before page renders
(function() {
  var s = document.createElement('style');
  s.id = '__force_dark__';
  s.textContent = [
    'html { filter: invert(1) hue-rotate(180deg) !important; }',
    'img,video,canvas,svg { filter: invert(1) hue-rotate(180deg) !important; }'
  ].join('\
');
  (document.head || document.documentElement).appendChild(s);
})();

9Пример 5: собственная аналитика / отслеживание событий#

Совпадение: https://myshop.com/*
Запуск: document-idle
Отправляйте собственные события, когда страница полностью загрузилась:

// Track page views + button clicks
(function() {
  // Page view
  console.log('[Analytics] Page: ' + location.href);

  // Track all CTA button clicks
  document.querySelectorAll('button, .btn, a[href]').forEach(function(el) {
    el.addEventListener('click', function() {
      console.log('[Analytics] Clicked: ' + (el.textContent || el.href));
      // Replace with your own tracker call, e.g. gtag('event', ...)
    });
  });
})();

10Безопасность и ограничения#

⚡ document-start удаляет заголовки Content-Security-Policy для подходящей страницы. Используйте только на сайтах, которыми вы владеете или которым явно доверяете.

🔒 Политика одного источника: JS не имеет доступа к iframe с другого источника (PayPal, Stripe, вход через Google). Это ограничение браузерного движка, обойти его нельзя.

📵 Только HTTPS: API вроде геолокации или камеры во внедряемых скриптах требуют HTTPS.

✅ Защита от двойного запуска: каждый скрипт защищён флагом window, поэтому выполняется только один раз на страницу.

✅ Работает офлайн: умные пользовательские скрипты также запускаются в офлайн-приложениях из ZIP.

Эта страница создана из руководства по интеграции внутри самого приложения, поэтому в ней написано ровно то, что и в текущей сборке. Читать в формате Markdown.

Сверено с актуальным руководством 22.10.2026.