Страница 4 из 4 < | >


Контролируйте страницы с помощью UserJS

Доступные методы и события

window.opera.defineMagicVariable

Этот метод может использоваться UserJS для отмены глобальных переменных, определенных постоянными скриптами. Он имеет три параметра:

Name

Строка приводит имя переменной, которая должна быть отменена.

Getter

Функция, которая должна выполняться каждый раз, когда скрипт пытается обратиться к содержимому переменной. Любое значение, возвращенное функцией, используется как значение переменной. Функцию будут передавать единственный параметр; текущее значение переменной.

Setter

Дополнительный; Функция, которая должна выполняться каждый раз, когда скрипт пытается установить значение переменной. Функцию будут передавать единственный параметр; значение, которое скрипт может записать в переменную. Если функция не определена, то вместо этого используется значение null.

Пример:

window.opera.defineMagicVariable(
  'isGoodBrowser',
  function (curVal) { return true; },
  function (newVal) { if(!newVal) { window.status = 'Repairing script'; } }
);

window.opera.defineMagicFunction

Этот метод может использоваться UserJS для отмены глобальных функций, определенных постоянными скриптами. Он имеет два параметра:

Name

Строка приводит имя переменной, которая должна быть отменена.

Implementation

Функция, которая должна быть запущена вместо функции, определенной страницей. Функцию будут передавать следующие параметры:

  1. Ссылка на реальную функцию, определенную страницей
  2. Объект, который был бы упомянут ключевым словом ‘this’ в реальной функции.
  3. Любые параметры, которые должны быть переданы реальной функции (каждый передается как отдельный параметр для magic функции).

Например:

window.opera.defineMagicFunction(
  'getLayer',
  function ( oRealFunc, oThis, oParam1, oParam2 ) {
    return oParam1.getElementById('oParam2').style;
  }
);

Этот пример отменяет функцию ‘f’ . Если объект ‘this’ обращается к объекту ‘window’ , он возвращает false. В противном случае он вместо этого только выполнит реальную функцию:

window.opera.defineMagicFunction(
  'f',
  function( real, thisObject ) {
    if( thisObject == window ) {
      return false;
    } else {
      return real.apply( thisObject, arguments.slice(2) );
    }
  }
);

window.opera.addEventListener

Это родовой метод используется для добавления ожиданий событий скриптами UserJS. При обнаружении события, обработчик события передает объект '''UserJSEvent''' (который также доступен через ‘window.event‘). В дополнение к обычным свойствам события, в зависимости от того, какой тип события обнаружен, объект UserJSEvent может также заполнить свойства ‘element’ , ‘event’ , ‘listener’ , ‘eventCancelled’ , ‘propagationStopped’ , ‘source’ и ‘returnValue’ . Некоторые события могут быть прекращены используя preventDefault, и это может быть использовано для предотвращения выполнения скрипта или обработчика событий.

Ожидания событий пользовательских скриптов могут быть добавлены почти в любом месте UserJS-файла. Ожидания не могут быть добавлены функциями обработчика для регулярных событий, или сценариями, активизированными таймерами. Следующие события могут быть обнаружены:

BeforeExternalScript

Происходит в том случае, когда встречается элемент ‘SCRIPT’ с атрибутом ‘SRC’ . Элемент скрипта доступен в качестве атрибута элемента ‘UserJSEvent’ файла UserJS. Если отменено, то внешний код не загружается и элемент скрипта не выполняется. В дополнении, если он отменен, событие ‘BeforeScript’ не происходит.

BeforeScript

Происходит до запуска элемента ‘SCRIPT’ . Элемент скрипта доступен в качестве атрибута элемента ‘UserJSEvent’ . Содержимое скрипта доступно в качестве свойства текста элемента скрипта, и также может быть перезаписано:

UserJSEvent.element.text = UserJSEvent.element.text.replace(/!=s*null/,'');

Событие ‘BeforeScript’ происходит для inline скрипта также, как и внешний скрипт, включая скрипты с типами, которые Opera нормально не может выполнять (например, VBScript). Если отменено, то элемент скрипта не запускается.

AfterScript

Происходит после того, как завершится выполнение элемента ‘SCRIPT’ . Элемент скрипта доступен в качестве атрибута элемента ‘UserJSEvent’ .

BeforeEvent

Происходит до того, как произошли события регулярного скрипта, независимо от того, было ли это событие обработано какими-нибудь обработчиками событий. Регулярное событие доступно в качестве атрибута события ‘UserJSEvent’ . Если отменено, то регулярное событие не происходит, выполняется его действие по-умолчанию, и любые ассоциированные события ‘BeforeEventListener’ не происходят.

BeforeEvent.type

Также, как и ‘BeforeEvent’ , но происходит только для событий определенных типов (например, ‘BeforeEvent.click‘). В Opera 8, если ожидания зарегистрированы для соответствования событию ‘BeforeEvent.type’ , то не происходит событие ‘BeforeEvent’ . В Opera 9 – происходят оба.

AfterEvent

Происходит после того, как сработает и обработается регулярное событие, но до выполнения его действия по-умолчанию. Регулярное событие доступно в качестве атрибута события ‘UserJSEvent’ . Если отменено, то будут игнорироваться любые попытки обработчика регулярных событий отменить регулярное событие. Объект ‘UserJSEvent’ может также иметь свойство ‘eventCancelled’ , которое установится в ‘true’ , если любой обработчик регулярных событий отменит событие.

AfterEvent.type

Также, как и ‘AfterEvent’ , но происходит только для событий определенных типов (например, ‘AfterEvent.click‘). В Opera 8, если ожидания зарегистрированы для соответствования событию ‘AfterEvent.type event’ , то не происходит событие ‘AfterEvent’ . В Opera 9 – происходят оба.

BeforeEventListener

Происходит до вызова ожидания регулярного события. Регулярное событие доступно в качестве атрибута события ‘UserJSEvent’ , и вызываемое ожидание доступно в качестве ожидания ‘UserJSEvent’ . Если отменено, то не может быть вызвано ожидание регулярного события.

BeforeEventListener.type

Также, как и ‘BeforeEventListener’ , но происходит только для событий определенных типов (например, ‘BeforeEventListener.click‘). В Opera 8, если ожидания зарегистрированы для соответствования событию ‘BeforeEventListener.type’ , то не происходит событие ‘BeforeEventListener’ . В Opera 9 – происходят оба.

AfterEventListener

Происходит после вызова ожидания регулярного события. Регулярное событие доступно в качестве атрибута события ‘UserJSEvent’ , и вызываемое ожидание доступно в качестве атрибута ожидания ‘UserJSEvent’ . Если отменено, то будут игнорироваться любые попытки обработчика регулярных событий отменить распространение регулярного события. Объект ‘UserJSEvent’ также имеет свойство ‘propagationStopped’ , которое установится в ‘true’ , если любой обработчик регулярных событий отменит распространение события.

AfterEventListener.type

Также, как и ‘AfterEventListener’ , но происходит только для событий определенных типов (например, ‘AfterEventListener.click‘). В Opera 8, если ожидания зарегистрированы для соответствования событию ‘AfterEventListener.type’ , то не происходит событие ‘AfterEventListener’ . В Opera 9 – происходят оба.

BeforeJavascriptURL

Происходит до выполнения ‘javascript:’ в URL. Код JavaScript, который должен быть выполнен (весь код в URL после ‘javascript:‘), доступен в качестве атрибута исходного кода ‘UserJSEvent’ , и также может быть перезаписан. Если отменено, то ‘javascript:’ в URL не выполняется.

AfterJavascriptURL

Происходит после выполнения ‘javascript:’ в URL. выполненный код JavaScript (весь код в URL после ‘javascript:‘) доступен в качестве атрибута исходного кода ‘UserJSEvent’ , и любое значение, возвращенное этим кодом, доступно в качестве атрибута ‘returnValue’ события ‘UserJSEvent’ . Атрибут ‘returnValue’ также может быть перезаписан. Если отменено, то возвращенное значение не может быть использовано в качестве исходного кода новой страницы.

window.opera.removeEventListener

Метод может использоваться для удаления ожиданий событий UserJS, которые добавлены использованием ‘window.opera.addEventListener’ . Он не может использоваться в том случае, если ожидание добавлено в качестве анонимной функции. Для получения дополнительной информации, смотрите События W3C DOM Level 2 — Спецификация интерфейсов регистрации событий.

window.opera.pushXSLTransform

Этот метод может быть использован нормальными скриптами и UserJS для применения таблиц стилей XSL к текущему документу. Он имеет один параметр:

Stylesheet

Любой документ, корневым элементом которого является или ‘xsl:stylesheet’ или ‘xsl:transform’ , или сам элемент ‘xsl:stylesheet’ .

При необходимости он может применяться несколько раз. Каждое преобразование будет применяться к результату предыдущего преобразования.

Пример:

window.opera.pushXSLTransform(
  (new DOMParser()).parseFromString(
    '<stylesheet '+
    'xmlns="http://www.w3.org/1999/XSL/Transform" '+
    'version="1.0"> ... </stylesheet>',
    'text/xml'
  )
);

window.opera.popXSLTransform

Этот метод может быть использован нормальными скриптами и UserJS для удаления последней таблицы стилей XSL, которая была применена с использованием ‘pushXSLTransform’ . Он не имеет никаких параметров.

window.opera.setOverrideHistoryNavigationMode

Этот метод может быть использован UserJS для установки режима навигации по истории, который должна использовать Opera для текущего документа. Он имеет один параметр:

Mode

Одно из значений: ‘automatic’ , ‘compatible’ , или ‘fast’ .

Смотрите статью в базе знаний для получения дополнительной информации.

window.opera.getOverrideHistoryNavigationMode

Возвращает последнее значение режима навигации по истории, которое установлено для текущего документа с использованием ‘setOverrideHistoryNavigationMode’ . По-умолчанию – в ‘automatic’ .

Объект UserJSEvent

Это объект события, передаваемый в функции обработчика событий UserJS (он также доступен через ‘window.event‘). Также, как и обычные свойства объекта события, он имеет те, которые характерны для событий UserJS. В то время, как многие из свойств в UserJS используются редко (например, свойства ‘currentTarget’ , ‘srcElement’ , и ‘target’ – все они ссылаются на ‘window.opera‘), следующие свойства и методы являются самыми используемыми:

element

Объект, только чтение: элемент скрипта. Доступны все используемые DOM-методы, такие как ‘getAttribute’ и ‘setAttribute’ . Доступен для событий ‘BeforeExternalScript’ , ‘BeforeScript’ и ‘AfterScript’ .

element.text

Строка, чтение-запись: скрипт, который должен быть запущен. Доступна для событий ‘BeforeScript’ и ‘AfterScript’ . В отличии от нормальных скриптов страницы, UserJS позволяют смотреть исходный код скрипта из любого домена, а не только из того домена, из которого получена текущая страница.

event

Объект, только чтение: объект регулярного события. Доступен для событий ‘BeforeEvent’ и ‘AfterEvent’ .

eventCancelled

Булев, только чтение: говорит если обработчик событий отменяет событие. Доступен для событий ‘AfterEvent’ .

listener

Функция, только чтение: ссылка на функцию обработчика событий. Доступна для событий ‘BeforeEventListener’ и ‘AfterEventListener’ .

preventDefault

Функция, только чтение: предотвращает действия по-умолчанию, например: предотвращение запуска скрипта, предотвращения происхождения событий, или предотврещение блокировки обработчиком событий подтверждения формы. Доступна для всех событий, но не имеет эффекта с событиями ‘AfterScript’ .

propagationStopped

Булев, чтение-запись: говорит если обработчик событий останавливает распространение события. Доступен для событий ‘AfterEventListener’ .

returnValue

Строка, чтение-запись: значение, возвращенное скриптом. Доступна для событий ‘AfterJavascriptURL’ .

source

Строка, чтение-запись: скрипт, который должен запуститься, или который уже выполнился. Доступна для событий ‘BeforeJavascriptURL’ и ‘AfterJavascriptURL’ .

type

Строка, только чтение: тип обнаруженного события; например: ‘BeforeJavascriptURL’. Доступен для всех событий.


Страница 4 из 4 < | >


Оригинал страницы: Take Control with User JavaScript — Specifications

Copyright Opera Software ASA. Все права зарезервированы

OperaFan.net, 2007. Ermir, неофициальный перевод.