Расширение «LinkClicker» позволяет имитировать нажатие кнопки мышки на ссылках кросс доменных html страниц, получать список ссылок, обрабатывать события браузера связанные с открытием, закрытием и обновлением вкладок браузера и многое другое.

Для пользователя работа расширения прозрачна. При обнаружении на сайте страницы требующей доступ к расширению «LinkClicker», производится запрос к пользователю на разрешение/отмену доступа страниц сайта к расширению.

Для Opera установите «LinkClicker». Для Chrome и Яндекс.Браузер установите «LinkClicker».

Дальнейшая информация предназначена для программистов на JavaScript. Если вы обычный пользователь или дизайнер сайтов, на этом ваше ознакомления с данным описанием работы расширения должны закончится!

Примеры: применение методов с учетом DOM модели документа страницы


Как с этим работать в JavaScript
Все свойства, методы и события инкапсулированы в JavaScript объекте chrome_tabs_4884_
1. Скачиваем и добавляем на свой сайт файл chrome_tabs_4884_.js
2. Имя HTML файла из которого нужно получить доступ к расширению «LinkClicker» должно заканчиваться на _4884_.html
3. В самом HTML файле добавляем тег < script src="chrome_tabs_4884_.js" > </script >

Теперь в JavaScript нам доступен глобальный объект chrome_tabs_4884_. Проверяем свойство chrome_tabs_4884_.isLoading ( внимание: свойство устанавливается только после формирования DOM модели документа страницы, смотри: chrome.webNavigation.onCompleted, поэтому его проверка не может производится во время загрузки страницы! ), если его значение false - расширение «LinkClicker» не установлено или пользователь отклонил запрос на доступ к расширению, true - объект chrome_tabs_4884_ готов к работе.

Если пользователь, при установленном расширении «LinkClicker», ошибочно отклонил запрос на доступ к расширению, нужно перезагрузить браузер или обновить расширение «LinkClicker». Эти действия пользователь должен выполнить вручную. В обоих случаях следует отобразить окно с описанием проблемы и дать ссылку на расширение «LinkClicker».

Описание событий, методов и свойств объекта chrome_tabs_4884_

События:
onBeforeNavigate: function(tabId, url), onCompleted: function(tabId, url), onRemoved: function(tabId), onTabsCreate: function(tabId, url), onTabsCreateCompleted: function(tabId, url), onTabsUpdate: function(tabId, url), onTabsUpdateCompleted: function(tabId, url), onTabsUpdateDenied: function(tabId, url), onGetLinks: function(tabId, array_url, array_text), onGetLinksUniqueURL: function(tabId, array_url, array_text), onClickLink: function(tabId, was_click, link_text, link_url, link_pos), onGetParam: function(tabId, hostname, _localStorage), onSetParam: function(tabId, hostname, _localStorage), onRemovedNew: function(tabId, _cookies), onGetValuesByTagName: function(tabId, array_result), onSetAttributesByTagName: function(tabId, count), onClickByTagName: function(tabId, was_click)

Событиям могут присваиваться ваши функции обработки с соответствующими параметрами. Для удаления обработчика события воспользуйтесь оператором delete chrome_tabs_4884_.событие
У всех событий есть параметр tabId, это целочисленный Id вкладки браузера в котором они произошли.

onBeforeNavigate: function(tabId, url) chrome.webNavigation.onBeforeNavigate
onCompleted: function(tabId, url) chrome.webNavigation.onCompleted
onRemoved: function(tabId) chrome.tabs.onRemoved
происходят от событий chrome расширения, параметр url - адресная строка страницы.

onTabsCreate: function(tabId, url) происходит после вызова метода chrome_tabs_4884_.tabsCreate(url) из callback функции chrome.tabs.create
onTabsCreateCompleted: function(tabId, url) аналогична onCompleted, но происходит после вызова метода chrome_tabs_4884_.tabsCreate(url)

onTabsUpdate: function(tabId, url) происходит после вызова метода chrome_tabs_4884_.tabsUpdate(tabId, url) из callback функции chrome.tabs.update
onTabsUpdateCompleted: function(tabId, url) аналогична onCompleted, но происходит после вызова метода chrome_tabs_4884_.tabsUpdate(tabId, url)
onTabsUpdateDenied: function(tabId, url) происходит в случаи запрета на выполнения метода chrome_tabs_4884_.tabsUpdate(tabId, url) для указанного tabId

onGetLinks: function(tabId, array_url, array_text) происходит после вызова метода getLinks(tabId). array_url и array_text массивы с href и innerText ссылок. Позиция в массиве соответствует позиции в коллекции document.links
onGetLinksUniqueURL: function(tabId, array_url, array_text) происходит после вызова метода GetLinksUniqueURL(tabId). array_url и array_text массивы с href и innerText ссылок. array_url массив состоит из уникальных значений. Если в коллекции document.links встречаются одинаковые href, соответствующий элемент array_text принимает значение последнего найденного link.innerText

onClickLink: function(tabId, was_click, link_text, link_url, link_pos) происходит после вызова методов clickLink(tabId, link_text), clickLinkURL(tabId, link_url) и clickLinkPos(tabId, link_pos). При успешном выполнении was_click = true, link_text = innerText ссылки, link_url = href ссылки, link_pos = позиция в коллекции document.links. При was_click = false, в link_text при вызове метода clickLink(tabId, link_text) значение link_text (при вызове других методов link_text = ""), link_url = "", link_pos = -1


onGetParam: function(tabId, hostname, _localStorage) происходит после вызова метода chrome_tabs_4884_.getParam: function(tabId) и как событие в окне открытом chrome_tabs_4884_.tabsCreateNew(url, filter, _cookies).
hostname - домен, _localStorage - массив объектов из localStorage страницы с tabId.

onSetParam: function(tabId, hostname, _localStorage) происходит после вызова метода chrome_tabs_4884_.setParam(tabId, merge, _localStorage). hostname - домен, _localStorage - массив объектов из localStorage страницы с tabId.

onRemovedNew: function(tabId, _cookies) происходит после закрытия окна открытого chrome_tabs_4884_.tabsCreateNew(url, filter, _cookies). В _cookies данные по всем посещённым в окне доменам.

onGetValuesByTagName: function(tabId, array_result) происходит после вызова метода chrome_tabs_4884_.getValuesByTagName(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search).
В array_result массив из значений атрибутов attribute_result подходящих по условиям.

onSetAttributesByTagName: function(tabId, count) происходит после вызова метода chrome_tabs_4884_.setAttributesByTagName(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, attribute_value, reg_value, value, pos).
В count количество изменённых свойств атрибутов.

onClickByTagName: function(tabId, was_click) происходит после вызова метода chrome_tabs_4884_.clickByTagName(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, dblclick).
was_click == true, если удалось найти элемент.

onPresskeyByTagName: function(tabId, was_presskey) происходит после вызова метода presskeyByTagName(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, value, key_code, chr, code, shift).
was_presskey == true, если удалось найти элемент.

onEventByTagName: function(tabId, was_event) происходит после вызова метода chrome_tabs_4884_.eventByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, typeArg, eventInit).
was_event == true, если удалось найти элемент.

onInputEmulationByTagName: function(tabId, was_emulation) происходит после вызова метода chrome_tabs_4884_.inputEmulationByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, text, pasteAll, array_nat, array_lat, array_nat_shift, array_lat_unshift).
was_emulation == true, если удалось найти элемент.


Методы:
defineNavigator: function(userAgent, Navigator, Plugins, Screen), returnNavigator: function(), tabsCreate: function(url), tabsCreateNew: function(url, filter, _cookies), tabsUpdate: function(tabId, url), tabsRemove: function(tabId), getLinks: function(tabId), getLinksUniqueURL: function(tabId), clickLink: function(tabId, link_text), clickLinkURL: function(tabId, link_url), clickLinkPos: function(tabId, link_pos), getParam: function(tabId), setParam: function(tabId, merge, _localStorage), getValuesByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search), setAttributesByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, attribute_value, reg_value, value, pos), clickByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, dblclick), presskeyByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, value, key_code, chr, code, shift), >eventByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, typeArg, eventInit), inputEmulationByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, text, pasteAll, array_nat, array_lat, array_nat_shift, array_lat_unshift), getPageURL: function(tabId), getArrayPagesId: function(), ClearArrayTabId: function(), ClearEvent: function(), Clear: function()

defineNavigator: function(userAgent, Navigator, Plugins, Screen) переопределяет http-заголовок userAgent отсылаемый браузером серверу, предустанавливает свойства window.navigator, window.navigator.plugins и window.screen. Параметры Navigator, Plugins, Screen могут иметь значение null.

returnNavigator: function() отменяет defineNavigator(userAgent, Navigator, Plugins, Screen).

tabsCreate: function(url) открывает новую вкладку в браузере со страницей по адресу url. Для своей работы использует метод chrome.tabs.create
Инициирует два события: onTabsCreate(tabId, url) и onTabsCreateCompleted(tabId, url)

tabsCreateNew: function(url, filter, _cookies) открывает новую вкладку в браузере со страницей по адресу url с предустановкой cookeis. Для своей работы использует метод chrome.tabs.create
filter используется в:
chrome.webRequest.onHeadersReceived.addListener
chrome.webRequest.onBeforeRequest.addListener
chrome.webNavigation.onCompleted.addListener
для всех доменов можно задать в виде: {urls: ["<all_urls>"]}
Первоначальную очистку _cookies для доменов можно задать в виде: {'facebook.com': {}, 'www.facebook.com': {}, 'test.ru': {} ...}
далее можно обрабатывать событие chrome_tabs_4884_.onRemovedNew(tabId, _cookies), сохранять cookies, использованные в окне, в localStorage или на сервере. С помощью этой функции можно делать переключение между аккаунтами.
Инициирует четыре события: onTabsCreate(tabId, url), onTabsCreateCompleted(tabId, url), onGetParam: function(tabId, hostname, _localStorage) и onRemovedNew: function(tabId, _cookies)

TabsUpdate: function(tabId, url) открывает во вкладке tabId страницу по адресу url. tabId должен быть получен после метода tabsCreate(url), иначе будет сгенерировано событие onTabsUpdateDenied(tabId, url). Для своей работы использует метод chrome.tabs.update
Инициирует два события: onTabsUpdate(tabId, url) и onTabsUpdateCompleted(tabId, url)

tabsRemove: function(tabId) Закрывает вкладку с tabId. Для своей работы использует метод chrome.tabs.remove
Инициирует событие: onRemove(tabId)

GetLinks: function(tabId) запрашивает объекты коллекции document.links, для вкладки tabId
Инициирует событие onGetLinks(tabId, array_url, array_text)
GetLinksUniqueURL: function(tabId) запрашивает объекты коллекции document.links с уникальными link.href, для вкладки tabId
Инициирует событие onGetLinksUniqueURL(tabId, array_url, array_text)

clickLink: function(tabId, link_text) производит имитацию клика левой кнопки мышки по ссылке во вкладке tabId, когда находит в коллекции document.links, свойство innerText = link_text
Инициирует событие onClickLink(tabId, was_click, link_text, link_url, link_pos)

clickLinkURL: function(tabId, link_url) производит имитацию клика левой кнопки мышки по ссылке во вкладке tabId, когда находит в коллекции document.links, свойство href = link_url
Инициирует событие onClickLink(tabId, was_click, link_text, link_url, link_pos)

clickLinkPos: function(tabId, link_pos) производит имитацию клика левой кнопки мышки по ссылке во вкладке tabId, на объекте document.links[link_pos]
Инициирует событие onClickLink(tabId, was_click, link_text, link_url, link_pos)

getParam: function(tabId) запрашивает localStorage сайта загруженного во вкладки tabId
Инициирует событие onGetParam(tabId, hostname, _localStorage)

setParam: function(tabId, merge, _localStorage) устанавливает localStorage сайта загруженного во вкладку tabId. Если параметр merge==false, предварительно очищаются localStorage и sessionStorage. Возвращает состояние объекта localStorage до изминений.
Инициирует событие onSetParam(tabId, hostname, _localStorage)

getValuesByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search) запрашивает элементы tag со страницы загруженной во вкладке tabId.
attribute_compare - имя атрибута для сравнения.
attribute_compare_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
prev_parent - обратится к родителю найденного элемента на prev_parent колен назад. 0 - текущий элемент.
childrens - обратится к дочернему элементу пройдя по дереву элементов согласно массиву childrens. [] - текущий элемент.
attribute_result - имя атрибута для возрата его значения.
attribute_result_search - регулярное выражение для сранения значения атрибута возврата, '.*' - любое значение.
Инициирует событие onGetValuesByTagName(tabId, array_result)

setAttributesByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, attribute_value, value, pos) устанавливает значения в атрибутах элементов tag со страницы загруженной во вкладке tabId.
attribute_compare - имя атрибута для сравнения.
attribute_compare_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
prev_parent - обратится к родителю найденного элемента на prev_parent колен назад. 0 - текущий элемент.
childrens - обратится к дочернему элементу пройдя по дереву элементов согласно массиву childrens. [] - текущий элемент.
attribute_result - имя атрибута для сравнения его значения.
attribute_result_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
attribute_value - имя атрибута для присвоения ему значения.
value - заменяем на это значение.
pos - позиция в списке найденого элемента, которому присваивается значение. Если задано -1, то присваивается значения всем элементам.
Инициирует событие onSetAttributesByTagName(tabId, count)

setAttributesByTagNameR: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, attribute_value, reg_value, reg_flag, value, pos) устанавливает значения в атрибутах элементов tag со страницы загруженной во вкладке tabId.
attribute_compare - имя атрибута для сравнения.
attribute_compare_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
prev_parent - обратится к родителю найденного элемента на prev_parent колен назад. 0 - текущий элемент.
childrens - обратится к дочернему элементу пройдя по дереву элементов согласно массиву childrens. [] - текущий элемент.
attribute_result - имя атрибута для сравнения его значения.
attribute_result_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
attribute_value - имя атрибута для присвоения ему значения.
reg_value - регулярное выражение для сравнения его значения , '.*' - любое значение.
reg_flag - i, g и прочие флаги для new RegExp(Выражения, [Флаги]) в JavaScript
value - заменяем на это значение.
pos - позиция в списке найденого элемента, которому присваивается значение. Если задано -1, то присваивается значения всем элементам.
Инициирует событие onSetAttributesByTagName(tabId, count)

clickByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, dblclick) делает click() или dblclick() на элементе tag со страницы загруженной во вкладке tabId.
attribute_compare - имя атрибута для сравнения.
attribute_compare_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
prev_parent - обратится к родителю найденного элемента на prev_parent колен назад. 0 - текущий элемент.
childrens - обратится к дочернему элементу пройдя по дереву элементов согласно массиву childrens. [] - текущий элемент.
attribute_result - имя атрибута для сравнения его значения.
attribute_result_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
pos - позиция в списке найденого элемента для котороко выполняется событие click() или dblclick().
dblclick - значение true для события dblclick(), false для click().
Инициирует событие onClickByTagName(tabId, was_click)

presskeyByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, value, key_code, chr, code, shift) имитирует событие [keydown + presskey + keyup] для элемента tag со страницы загруженной во вкладке tabId.
attribute_compare - имя атрибута для сравнения.
attribute_compare_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
prev_parent - обратится к родителю найденного элемента на prev_parent колен назад. 0 - текущий элемент.
childrens - обратится к дочернему элементу пройдя по дереву элементов согласно массиву childrens. [] - текущий элемент.
attribute_result - имя атрибута для сравнения его значения.
attribute_result_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
pos - позиция в списке найденого элемента для котороко выполняется событие.
value - значение присваимое свойству найденнлму объекту - value.
key_code - код клавиши аналогичный свойству keyCode события KeyboardEvent.
chr - символ аналогичный свойству charCode события KeyboardEvent.
code - символьное обозначение клавиши аналогичный свойству code события KeyboardEvent.
shift - значение true указывает на то, что нажата клавиша Shift.
Не пользуйтесь этой функцией если не знаете как работают клавиатурные события в JavaScript, лучше воспользуйтесь функцией inputEmulationByTagName().
Инициирует событие onPresskeyByTagName(tabId, was_presskey)

eventByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, typeArg, eventInit) имитирует событие Event(typeArg, eventInit) для найденного элемента. attribute_compare - имя атрибута для сравнения.
attribute_compare_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
prev_parent - обратится к родителю найденного элемента на prev_parent колен назад. 0 - текущий элемент.
childrens - обратится к дочернему элементу пройдя по дереву элементов согласно массиву childrens. [] - текущий элемент.
attribute_result - имя атрибута для сравнения его значения.
attribute_result_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
pos - позиция в списке найденого элемента для котороко выполняется событие.
typeArg и eventInit - соответствующие объекты Event(typeArg, eventInit).
Инициирует событие onEventByTagName(tabId, was_event)

inputEmulationByTagName: function(tabId, tag, attribute_compare, attribute_compare_search, prev_parent, childrens, attribute_result, attribute_result_search, pos, text, pasteAll, array_nat, array_lat, array_nat_shift, array_lat_unshift) имитируется ввод строки для найденного элемента.
attribute_compare - имя атрибута для сравнения.
attribute_compare_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
prev_parent - обратится к родителю найденного элемента на prev_parent колен назад. 0 - текущий элемент.
childrens - обратится к дочернему элементу пройдя по дереву элементов согласно массиву childrens. [] - текущий элемент.
attribute_result - имя атрибута для сравнения его значения.
attribute_result_search - регулярное выражение для сранения значения атрибута, '.*' - любое значение.
pos - позиция в списке найденого элемента для котороко выполняется событие.
text - вводимый текст.
pasteAll - true: если встретится символ с неизвестным keyCode, то будет имитирована вставка текста через буфер всей строки. Иначе вставка будет производится посимвольно.
array_nat - строка с национальными символами для перекодировки её в коды клавиатуры.
array_lat - соответствующая array_nat строка с латинскими символами.
array_nat_shift - национальные символы вводимые через клавишу [shift].
array_lat_unshift - соответствующие array_nat_shift латинские символы.
Инициирует событие onInputEmulationByTagName(tabId, was_inputEmulation)

Пример массивов для перекодировки кирилицы:
var array_nat = 'ёйцукенгшщзхъфывапролдж'+'э'+'ячсмитьбюЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ';
var array_lat = '`qwertyuiop[]asdfghjkl;'+"'"+'zxcvbnm,.~QWERTYUIOP{}ASDFGHJKL:"ZXCVBNM<>';
var array_nat_shift = '№';
var array_lat_unshift = '3';


getPageURL: function(tabId) возвращает url для вкладки tabId
getArrayPagesId: function() возвращает массив tabId всех доступных вкладок

ClearArrayTabId: function() удаляет информацию из объекта chrome_tabs_4884_ обо всех доступных вкладках
ClearEvent: function() удаляет все ранее присвоенные объекту chrome_tabs_4884_ функции обработки событий
Clear: function() очищает методы и свойства объекта chrome_tabs_4884_


Свойства:
isLoading: Boolean

isLoading: Boolean если isLoading == true, - объект chrome_tabs_4884_ инициирован и готов к работе

Примеры: применение методов с учетом DOM модели документа страницы