Полезная информация

Общайтесь со знакомыми и друзьями в нашем сообществе в Facebook.

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 26-06-2020 13:29:14

блин чот проблема возникает ...Не хотит принимать массив аргументов в

Не туда… совсем


Ладно, если передать объект по твоему способу с внедрением, то так
[spoiler][code]
var obj_inject = {
       
        'canvas':{
           
            'r': 0,
            'g': 3,
            'b': -4,
            'a': 2
        }
    };
   
   

var canvas_inject = function (obj) {
   
    const toBlob = HTMLCanvasElement.prototype.toBlob;
    const toDataURL = HTMLCanvasElement.prototype.toDataURL;
    const getImageData = CanvasRenderingContext2D.prototype.getImageData;
   
    var noisify = function (canvas, cont) {
       
        const shift = obj;
        const width = canvas.width, height = canvas.height;
           
        const imageData = getImageData.apply(cont, [0, 0, width, height]);
       
        for (let i = 0; i < height; i++) {
            for (let j = 0; j < width; j++) {
                const n = ((i * (width * 4)) + (j * 4));
                imageData.data[n + 0] = imageData.data[n + 0] + shift.r;
                imageData.data[n + 1] = imageData.data[n + 1] + shift.g;
                imageData.data[n + 2] = imageData.data[n + 2] + shift.b;

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 26-06-2020 09:09:01

Так в параметрах вызова же… :/

скрытый текст

Выделить код

Код:

var obj_inject = {
	
	'canvas':{
		
		'r': 0,
		'g': 3,
		'b': -4,
		'a': 2
	}
};

var inject = function(obj) {
	
	window.console.log(obj)
 
};

inject(obj_inject);

В чём конечная цель?


---------UPD

Чем пытаться внедрять скрипт текстом лучше юзайте wrappedJSObject чтобы получить доступ к пространству имён скриптов текущей страницы


скрытый текст

Выделить код

Код:

//В макросе выполняем
var win = window.content.document.defaultView.wrappedJSObject;

win.inject = function() {
	window.console.log("test");
};

//В консоле по Ctrl + Shift + k вызываем для проверки

inject();

iMacros » extract текста и преобразование его в числовой формат » 21-06-2020 21:51:12

BondM
Несколько классов элемента в данном методе указывается через точку вот так

скрытый текст

Выделить код

Код:

var time = window.document.querySelector('.plyr__controls__item.plyr__time--duration.plyr__time').innerText;
window.console.log(time)

скрытый текст

Выделить код

Код:

var time = window.document.querySelector('.plyr__controls__item.plyr__time--duration.plyr__time').innerText;
window.console.log(time)

var a = time.split(':'); 
var seconds = (+a[0]) * 60 + (+a[1]);
window.console.log(seconds);

iimPlayCode('WAIT SECONDS='+seconds);

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 13-05-2020 14:32:20

Gergi

Раньше решалось about:config

скрытый текст

Выделить код

Код:

signon.autologin.proxy=true
network.websocket.enabled=false


Попробуйте это

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

iMacros » [РЕШЕНО] Imacros Js. iimPlayCode. CONTENT и символ перевода строки. » 05-02-2020 23:20:01

скрытый текст

Выделить код

Код:

iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ID:write_form ATTR=NAME:message CONTENT=' + 'aaa<BR>bbb');


но лучше

скрытый текст

Выделить код

Код:

content.document.querySelector("textarea").value="aaa\nbbb\nc c c";

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 24-10-2019 01:43:50

InfSub, я на цикл не смотрел, т.к. он там вообще неуместен в таком виде. Наличие try{...} catch{...} не смутило? ;)
А так, вполне обыденная практика генерировать так динамические регулярки.

Судя по коду ему нужно при листинге страниц извлекать из pathname уникальный ник и подставлять его в регулярку,
с помощью которой он собирает в массив ссылки со страницы соответствующие нужному паттерну включающему ник.
Естественно, конечно оптимально было бы сразу собрать в коллекцию все ссылки методом querySelectorAll('a'); и согласен по поводу test()

скрытый текст

Выделить код

Код:

var arr = [];
var url = window.location.pathname.substr(1);
var nodes = window.document.querySelectorAll('a');
var re = new RegExp(url + '/status\\.\\d+', 'i');

for (i=0;i<nodes.length;i++) {
  var link = nodes[i].href;
  if (re.test(link))
    arr.push(link);
}

window.console.log(arr);

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 23-10-2019 23:15:46

Алим
Примерно так

скрытый текст

Выделить код

Код:

if(links.match(new RegExp(url + '/status.\\d+', 'i'))){
  массив.push(links)
}

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 20-10-2019 15:04:14

Заранее в текст вбейте символ переноса строки в нужные места

Есть же примеры

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


скрытый текст

Выделить код

Код:

var tx = ['Данное сообщение пишем с \nновой \n\n\nстроки'];

var txarea = window.document.querySelector('textarea[class^="message"]');
txarea.value = tx[0];

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 20-10-2019 14:41:25

saurbeck

скрытый текст

Выделить код

Код:

var text = ['Данное сообщение пишем с новой строки'];

iimPlayCode('TAG POS=1 TYPE=TEXTAREA FORM=ACTION:* ATTR=CLASS:message* CONTENT="'+ text[0].replace(/\s/g, '\r\n') +'"');

iMacros » Вытянуть данные при совпадении нескольких условий » 22-09-2019 12:06:33

И вам тоже дай бог здоровья (от агностика)! ;)
По поводу десктопа всё можно, есть множество гайдов, в том числе статей на хабре.
По запросу "desktop js" в выдаче гуугла много статей по этой тематике. Сам таким не занимался поскольку с JS мне на данный момент удобнее работать браузерно, где реализовано много технологий и API дающих дополнительный набор возможностей. Опять же иногда помогают готовые расширения для Firefox.

Но в любом случае для начала необходимо ознакомиться с основами javascript

скрытый текст
Основы:
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

И гуглить готовые примеры и рецепты на stackoverflow
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Успехов!

iMacros » Вытянуть данные при совпадении нескольких условий » 21-09-2019 18:28:04

Для отладки запроса

скрытый текст

Выделить код

Код:

var http = new window.XMLHttpRequest();


В остальных случаях для работы запросов из макроса объявите вначале кода XMLHttpRequest
скрытый текст

Выделить код

Код:

var XMLHttpRequest = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1");

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 18:57:56

Ваприанты:
- Токенизация
- Проверка рефёрера на сервере
- Отправка из средств разработчика не всегда корректно работает

Составляйте запрос вручную через конструктор XMLHttpRequest.

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 13:36:14

В настройки инструментов разработчика зайдите и включите непрерывные логи "Enable persistent logs"


скрытый текст
Ap0rvSF.png

iMacros » Вытянуть данные при совпадении нескольких условий » 20-09-2019 03:40:01

Вы сами должны определить какие данные отправляются при взаимодействии со страницей и найти нужные запросы.
Потом пробуйте имитировать запрос через XMLHttpRequest с необходимыми заголовками и параметрами.
Не видя страницы перед глазами со всеми событиями и подключенными скриптами, помощь вам будет схожа с сеансом телепатии. Тут слишком много "если".

iMacros » Вытянуть данные при совпадении нескольких условий » 19-09-2019 18:20:56

Вы вначале запрос найдите, который идёт на сервер при изменении цены.
Хотя бы по фильтру XHR отсортируйте на панели.

iMacros » Вытянуть данные при совпадении нескольких условий » 18-09-2019 15:12:54

Выше ссылку давал о типе данных и преобразовании типов. Читайте до понимания.
Прежде чем осуществлять арифметические действия, убедитесь, что значения переменных приведены к правильному типу (number).

Вам уже объяснил аналогичную вашу ошибку


Как об стенку горох… :angry:

iMacros » Вытянуть данные при совпадении нескольких условий » 17-09-2019 23:50:19

Не гадайте. Потратьте 30 минут на изучение селекторов

скрытый текст

Выделить код

Код:

window.document.querySelector('.form-control.price').value="Test input";


Ссылки вам уже выше дал и примеров масса.

iMacros » Вытянуть данные при совпадении нескольких условий » 17-09-2019 03:11:09

pricetax.match is not a function потому что pricetax у вас это уже число а не строка. Метод match() работает со строками а не числами

скрытый текст

Выделить код

Код:

var pricetax = "8.496434";// Сейчас строка

window.console.log(pricetax.match(/\d+\.\d{2}/)[0]);

// Или преобразуем число в строку с помощью метода String()
var pricetax = 8.496434;// Сейчас число

window.console.log(String(pricetax).match(/\d+\.\d{2}/)[0]);


Читайте о типе данных в JS и о преобразовании типов
скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

gødmøde пишет

проверка имени продавца, или идентификация себя по этому имени

Одним циклом всё это сортируете по условию в объект, а потом сравниваете.

iMacros » Вытянуть данные при совпадении нескольких условий » 16-09-2019 02:27:37

gødmøde пишет

ну дело в том что  мне не просто нужно получить самую верхнюю цену, а чтобы эта цена соответствовала моим критериям
1 data-server=9792
2 data-side=52
3 data-online=1

Вы плохо ознакомились с предложенными мануалами.

Пишете селекторы атрибутов без пробелов, чтобы получить только ноды соответствующие значениям data-server="9792", data-side="52" и data-online="1"

Собираете в массив все цены из полученных нод и находите минималную цену

скрытый текст

Выделить код

Код:

var nodes = window.document.querySelectorAll('[data-server="9792"][data-side="52"][data-online="1"]');
var arr = [];
for (i=0;i<nodes.length;i++) {
  var price = nodes[i].querySelector('.text-right>div').textContent;
  // Собираем в массив "arr" значения преобразованные к числу
  arr.push(+price.match(/[0-9.]+/)[0]);
}
// Отфильтровываем из массива "arr" минимальное число
var min_price = Math.min.apply(Math, arr);

// Смотрим в консоль
window.console.log(arr);
window.console.log(min_price);

iMacros » Вытянуть данные при совпадении нескольких условий » 15-09-2019 21:23:56

Используйте циклы

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Если у вас все ноды tr[data-href] на одной странице, то собираете их в один массивоподобный объект методом querySelectorAll
Потом перебираете в цикле со своим условием
скрытый текст

Выделить код

Код:

var nodes = window.document.querySelectorAll('tr[data-href]');
for (i=0;i<nodes.length;i++) {
  var node = nodes[i];
  var data_server = node.getAttribute('data-server');
  var data_side = node.getAttribute('data-side');
  var data_online = node.getAttribute('data-online');
  var price = node.querySelector('.text-right>div').textContent;
  if(data_server==3194&&data_side==52&&data_online==1)//проверяю чтобы все совпадало
    window.console.log(price.match(/[0-9.]+/)[0]); //вывожу цену если все ок по моим критериям
}


Примеров работы

iMacros » Вытянуть данные при совпадении нескольких условий » 15-09-2019 01:58:12

Потратьте полчаса на изучение селекторов


и сможете извлекать всё что угодно методами

querySelector и querySelectorAll

Знакомьтесь с методом getAttribute() для извлечения значений атрибутов

Вот ваши параметры по отдельности

скрытый текст

Выделить код

Код:

var node = window.document.querySelector('tr[data-href]');

var data_server = node.getAttribute('data-server');
var data_side = node.getAttribute('data-side');
var data_online = node.getAttribute('data-online');

// Значение цены
var price = node.querySelector('.text-right>div').textContent;

// Смотрим в консоль по ctrl + shift + k

window.console.log(data_server);
window.console.log(data_side);
window.console.log(data_online);
window.console.log(price);

// Значение цены без лишнего символа
window.console.log(price.match(/[0-9.]+/)[0]);


Чтобы фильтровать ненужные символы и извлекать из текста необходимое, изучайте регуля

iMacros » iMacros for Firefox - общие вопросы, обсуждение возможностей (часть 2) » 15-09-2019 01:05:49

Алим
Пользуйтесь лёгкой версией яндекса

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


Код отправки
скрытый текст

Выделить код

Код:

var input_nodes = window.document.querySelectorAll('.b-form-input__input');
input_nodes[0].value = "ivan@mail.ru";
input_nodes[3].value = "Test headline";

var input_txarea = window.document.querySelector('textarea#compose-send');
input_txarea.value = "Test message";

// Отправить
window.document.querySelector('.b-compose__send').click();

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia
Язык отображения форума: [Русский] [English]