Эксперты по js , а подскажите , как вы решаете вопрос когда нужно найти конкретное слово в html странице и как только оно появится делать какое-то действие . Слово заранее известно , его не нужно откуда-то брать. Может есть скелет такой реализации ?
обычно, где текст появится известно заранее и можно проверять тот элемент. Ну а так, то такЭксперты по js , а подскажите , как вы решаете вопрос когда нужно найти конкретное слово в html странице и как только оно появится делать какое-то действие . Слово заранее известно , его не нужно откуда-то брать. Может есть скелет такой реализации ?
var content = document.body.textContent || document.body.innerText;
var hasText = content.indexOf("твой текст")!==-1;
Если определять нужно не срочно, то можно по таймеру периодически проверять наличие, например так:Эксперты по js , а подскажите , как вы решаете вопрос когда нужно найти конкретное слово в html странице и как только оно появится делать какое-то действие . Слово заранее известно , его не нужно откуда-то брать. Может есть скелет такой реализации ?
waitForText("hello");
function waitForText(str) {
if (document.querySelector('my_element').innerText.indexOf(str) == -1) return setTimeout(waitForText, 1000, str);
// здесь после найденого текста
}
document.body.innerHTML.indexOf('ищем текст')
let myinput = document.querySelector('input');
myinput.addEventListener('input', inputEntered);
function inputEntered(event) {
if (event.target.innerText.indexOf('ищем текст') == -1) return;
// здесь обрабатываем
}
Описание ранее читал? ОписаниеКак пользоваться скриптом автозаполнения адреса ?
Справа сверху появилось окошко
Что нужно вводить чтоб адрес заполнился.
Для примера стоят такие данные но ничего не работает
Чуть подправленный скрипт для входа, если появился слайдер, то перезагружает страницу и пробует войти еще раз. Работает не всегда.
Код:// ==UserScript== // @name Aliexpress Login no slide // @namespace http://tampermonkey.net/ // @version 1.2 // @description Автоматический вход на Алиэкспресс // @author Andronio // @match https://login.aliexpress.com/* // @match https://login.aliexpress.ru/* // @grant none // ==/UserScript== (function() { 'use strict'; let ddelay = 1000; let key = sessionStorage.getItem('slider'); if (key) { let mass2 = parseString(key); setTimeout( () => { document.getElementById("fm-login-id").value = mass2[0]; document.getElementById("fm-login-password").value = mass2[1]; document.querySelector(".fm-button").click(); }, ddelay); sessionStorage.removeItem('slider'); return; } let div = document.createElement('div'); div.className = 'regavhod-box'; div.innerHTML += ` <input type="text" id="namepass"></br> <input type="button" id="vhod" class="regavhod-btn" value="Вход"> `; // Стили let styles = ` .regavhod-box { position: fixed; top: 0; right: 0; background: white; box-shadow: 1px -1px 4px 1px; padding: 10px 20px; z-index:9999; } .regavhod-btn { display: inline-block; padding: 5px 10px; margin-right:auto; cursor:pointer; }` let styleSheet = document.createElement("style") styleSheet.type = "text/css" styleSheet.innerText = styles document.head.append(styleSheet) document.body.append(div); let btn2 = document.getElementById("vhod"); btn2.addEventListener('click', vhodFunc); let mytext = document.getElementById("namepass"); mytext.addEventListener('keydown', event => { if (event.keyCode == "13") { document.getElementById('vhod').click(); } }); mytext.focus(); console.log("ali cookie " + document.cookie ); // Функция входа function vhodFunc () { let namepass = document.getElementById("namepass"); let mass; mass = parseString(namepass.value); if (mass) { let tabLogin = document.querySelectorAll(".fm-tabs-tab"); if (!tabLogin.length) tabLogin = document.querySelectorAll(".next-tabs-tab"); if (tabLogin.length) { if (!tabLogin[1].classList.contains("active")) tabLogin[1].click(); } let signName = document.getElementById("fm-login-id"); let signPass = document.getElementById("fm-login-password"); let enterButton = document.querySelector(".fm-button"); signPass.value = mass[1]; signName.value = mass[0]; enterButton.click(); setTimeout(checkSlider, 1000, mass[0] + ':' + mass[1]); } else alert("Нет логина"); } function parseString(str) { if (str == "") return null; if (/\w+@[\w\.]+\.\w+\t\w+/.test(str)) { return str.split('\t'); } else if (/\w+@[\w\.]+\.\w+:\w+/.test(str)) { return str.split(':'); } else return null; } // Проверяем слайдер, если есть, то обновляем и вход let tryAmount = 50; // количество попыток function checkSlider (logname) { if (--tryAmount) { if (document.getElementById('login-check-code').clientHeight) { sessionStorage.setItem('slider', logname); //location.reload(); location.href=location.href; } else setTimeout(checkSlider, 200, logname); } } })();
Можно поиграться временем до повторного входа. Сейчас 1 секунда.
let ddelay = 1000;
Не работает. Попробовал 5 секунд перед перезагрузкой. Видимо F5 что-то немного не так делает.Можно ли чуть подправить скрипт. Походу имеет значение не время повторного ввода.
А время через которое обновиться страница. Если быстро обновить страницу лезет слайдер. Если выждать секунды 2 , слайдера нет.
Подскажите, в чем может быть проблема, почему скрипт логинится по кругу бесконечо ? Захожу через страницу https://skidka.ru/user/auth/, скрипт логинится, доходит до главной страницы, куда то переходит и выскакивает окно с кнопками ВХОД и ОТМЕНА, проходит пару сек и опять открываетя страница для ввода логина пароли и так по кругу. Заметил что иногда всетаки скрипт срабатывает, доводя до главной страницы АЛИ, но это прим 2 из 10 раз. Подскажите, куда копать , Спасибо.Обновлённый скрипт для авторизации на Скидка.ру
Баги или пожелания по скрипту в лс.
p.s. код не смотреть, сделано лишь бы работало.
JavaScript:// ==UserScript== // @name Skidka - auth. // @namespace http://tampermonkey.net/ // @version 0.2 // @author Dimokin // @match https://skidka.ru // @match https://skidka.ru/user/auth/ // @match https://skidka.ru/shops/details/aliexpress-keshbek/ // @match https://skidka.ru/user/goto/72/ // @grant none // @require http://code.jquery.com/jquery-3.3.1.min.js // ==/UserScript== (function() { 'use strict'; var $ = window.jQuery; var MY_MAIL = 'ПОЧТА'; var MY_PASSWORD = 'ПАРОЛЬ'; $(document).ready(function() { setTimeout(function() { if (window.location.href === 'https://skidka.ru/') { window.location.href = 'https://skidka.ru/user/goto/72/'; } else if (window.location.href === 'https://skidka.ru/user/goto/72/') { setTimeout(function() { if ($('.goto-not-logged__buttons').length) { window.location.href = $('.goto-not-logged__buttons a').attr('href'); } }, 1000); } else { let nativeInputValueSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype, 'value').set; setTimeout(function() { let login = document.querySelector('.auth__phone-input input'); let pass = document.querySelector('.pass-input input'); nativeInputValueSetter.call(login, MY_MAIL); login.dispatchEvent(new Event('change', { bubbles: true })); login.dispatchEvent(new Event('input', { bubbles: true })); nativeInputValueSetter.call(pass, MY_PASSWORD); pass.dispatchEvent(new Event('change', { bubbles: true })); pass.dispatchEvent(new Event('input', { bubbles: true })); setTimeout(function() { $(".auth__buttons button").trigger('click'); setTimeout(function() { window.location.reload(); }, 1000); }, 1000); }, 1000); } }, 1000); }); })();
У меня такой проблемы не встречалось.Подскажите, в чем может быть проблема, почему скрипт логинится по кругу бесконечо ? Захожу через страницу https://skidka.ru/user/auth/, скрипт логинится, доходит до главной страницы, куда то переходит и выскакивает окно с кнопками ВХОД и ОТМЕНА, проходит пару сек и опять открываетя страница для ввода логина пароли и так по кругу. Заметил что иногда всетаки скрипт срабатывает, доводя до главной страницы АЛИ, но это прим 2 из 10 раз. Подскажите, куда копать , Спасибо.
Заметил что если заполнить поле логина и обновить, то после этого можно заполнять логин и пароль - слайдера не будетНе работает. Попробовал 5 секунд перед перезагрузкой. Видимо F5 что-то немного не так делает.
US $2.08 Многоразовая сумка на молнии для хранения продуктов, 10 шт.
https://aliexpress.ru/item/4000020423288.html
1 1 1
let outString = `price + ' ' + ship + item_name + newstr + item_id + newstr + mass1[0] + ' ' + mass1[1] + ' ' + mass1[2] + newstr + newstr`;
Кому что нравится, в этой теме в основном tampermonkey, по большей части они совместимы.Что сейчас юзают в фоксе - Tampermonkey, Greasemonkey или что-то ещё? slowpoke.jpg
я вообще не одно из них. Пишешь js скрипт, нажимаешь у гугле режим разраба и упаковать расширение и у тебя готовое расширениеЧто сейчас юзают в фоксе - Tampermonkey, Greasemonkey или что-то ещё? slowpoke.jpg
А не подскажешь, как запустить автоматическую скачку такого файла ?А уверен, что нужен именно файл? Есть куки, есть localStorage. У JS нет доступа к файловой системе в целях безопасности. Из просторов инета (сохранение в файл)
JavaScript:<script> var text = 'как записать строку в файл ".txt" с помощью js?'; document.write( '<a href="data:text/plain;charset=utf-8,%EF%BB%BF' + encodeURIComponent(text) + '" download="text.txt">text.txt</a>' ) </script>
Еще видел @future_ в скрипте getItem делал сохранение в файл
Просто кликни на ссылку.А не подскажешь, как запустить автоматическую скачку такого файла ?
это первое что пришло в голову , только у этой ссылки нет никаких селекторов и обратиться к ней никак невозможноПросто кликни на ссылку.
document.querySelector("a").click()
Как это нету? А "а"? Если нужен более уникальный селектор, так добавь его, напримерэто первое что пришло в голову , только у этой ссылки нет никаких селекторов и обратиться к ней никак невозможно
document.write('<a id="my-super-cool-selector" href="data:text/plain;charset=utf-8,%EF%BB%BF'
document.getElementById("my-super-cool-selector")