chrome.extension.onMessage.addListener(function(message) {
console.log('Из контент-скрипта получено следующее сообщение: ' + message);
if (message == 'вызвать алерт') {
// Здесь впишите ваш код для вызова алерта
}
});
window.addEventListener('message', function(event) {
// Извлекаем текст сообщения:
var dom_message = event.data;
console.log('Из DOM получено сообщение: ' + dom_message);
// Пересылаем полученное сообщение
// в фоновый процесс background.js:
chrome.extension.sendMessage(event.data);
});
window.postMessage('вызвать алерт', '*');
// Записываем параметры прокси в глобальную переменную:
window.proxy_auth = {
'address': 'Адрес_прокси:Порт_прокси',
'proxy_user': 'Логин от прокси',
'proxy_password': 'Пароль от прокси'
};
// Устсновка прокси через назначение PAC-скрипта:
chrome.proxy.settings.set(
{
value: {
mode: 'pac_script',
pacScript: {
data: 'function FindProxyForURL(url, host) { return "PROXY '+proxy_auth.addres+'"; }'
}
},
scope: 'regular'
},
function() {
console.log('Прокси '+proxy_auth.addres+' установлен');
}
);
// Автоматическая авторизация для установленного прокси:
chrome.webRequest.onAuthRequired.addListener(
function(info, callback) {
if (info.isProxy && typeof window.proxy_auth !== 'undefined') {
callback({
authCredentials: {
username: window.proxy_auth.proxy_user,
password: window.proxy_auth.proxy_password
}
});
}
else {
callback();
}
},
{ urls: [ '<all_urls>' ] },
[ 'asyncBlocking' ]
);
{
"name" : "Имя расширения",
"manifest_version" : 2,
"permissions" : [ "proxy", "webRequest", "webRequestBlocking", "<all_urls>" ],
"background" : { "persistent": true, "scripts": [ "background.js" ] }
}
chrome.proxy.settings.set(
{
value: {
mode: 'pac_script',
pacScript: {
data: 'function FindProxyForURL(url, host) { return "DIRECT"; }'
}
},
scope: 'regular'
},
function() {
console.log('Прокси сброшены');
}
);
{
"name" : "Имя расширения",
"manifest_version" : 2,
// ............................
"content_scripts" : [
{
"matches" : [ "https://*.site.ru/*", ],
"run_at": "document_start",
"js" : [ "content-script.js" ]
}
]
}
document.write('');
document.close();
var script = document.createElement('script');
script.innerHTML = `function test() {
// Ваш код
}`;
document.head.appendChild(script);
function clickElements(selector, regexp, where) {
return new Promise(function(returnResult) {
var search_result = false;
var local_reactive_function = function() {
var click_elements = searchElements(selector, regexp, where);
if (click_elements.length > 0) {
if (search_result === false) {
search_result = true;
observer.disconnect();
setTimeout(function() {
var click_elements = searchElements(selector, regexp, where);
for (var n = 0; n < click_elements.length; n++) {
click_elements[n].click();
}
returnResult(click_elements.length);
}, 1000);
}
}
}
var observer = new MutationObserver(local_reactive_function);
observer.observe(document.body, {
characterData: true,
attributes: true,
childList: true,
subtree: true
});
local_reactive_function();
});
}
function searchElements(selector, regexp, where) {
var search_elements = [];
if (typeof where !== 'undefined') {
var all_elements = where.querySelectorAll(selector);
}
else {
var all_elements = document.querySelectorAll(selector);
}
for (var n = 0; n < all_elements.length; n++) {
if (typeof regexp == 'object') {
if (typeof regexp.test == 'function') {
if (regexp.test(all_elements[n].innerText.trim())) {
search_elements.push(all_elements[n]);
}
}
}
else {
search_elements.push(all_elements[n]);
}
}
return search_elements;
}
(async function() {
await clickElements('CSS-селектор 1');
await clickElements('CSS-селектор 2');
await clickElements('CSS-селектор 3');
})();
chrome.tabs.query({}, function(tabs) {
for (i = 0; i < tabs.length; i++) {
chrome.tabs.sendMessage(tabs[i].id, 'Сообщение, которое нужно передать');
}
});
chrome.extension.onMessage.addListener(function(msg) {
console.log('Принято сообщение: ' + msg);
});
chrome.cookies.getAll({}, function(cookies) {
var count = cookies.length;
console.log('Найдено Cookie '+count+' шт.');
console.dir(cookies);
for (var n = 0; n < cookies.length; n++) {
var details = {
'name': cookies[n]['name'],
'storeId': cookies[n]['storeId'],
'url': 'https://' + cookies[n]['domain'] + cookies[n]['path']
};
chrome.cookies.remove(details, function(result) {
count--;
if (count === 0) {
console.log('Cookie успешно очищены:');
chrome.cookies.getAll({}, function(cookies) { console.dir(cookies); });
}
});
}
});