пишу юзерскрипт для игры... суть в следующем: нужно ожидать определенное количество времен, после чего обновить страницу и перейти по ссылке..
закинул в виде расширения в chrome.
на одной вкладке работает сносно.. но при открытии нескольких вкладок на какой-либо из вкладок может проскочить момент перехода по ссылке.. то есть обновление прошло, а перейти не успело - таймер пошел заново. в чем может заключаться проблема?
код скрипта
function timer() {
setTimeout(update, 2000);
}
function update() {
localStorage.setItem("clickOnLink", "1");
location.reload(true);
}
function FindByAttributeValue() {
var All = document.getElementsByTagName("a");
for (var i = 0; i < All.length; i++) {
if (/\.*Персонаж\.*/.test(All[i].innerHTML)) {
return All[i]
}
}
}
function goLink() {
var link = FindByAttributeValue();
if (link === undefined) {
alert("Ссылка не найдена");
timer();
}
localStorage.setItem("clickOnLink", "2");
window.location.href = link.href;
}
window.onload = function () {
var item = localStorage.getItem("clickOnLink");
if (item === null) {
timer();
}
localStorage.removeItem("clickOnLink");
switch (item) {
case "1":
{
goLink();
break;
}
case "2":
{
timer();
break;
}
}
}
Проблема заключается в том, что все вкладки используют один и тот же ключ "clickOnLink".
Если это функциональность нужна Вам работающей параллельно в нескольких табах браузера, есть вариант передавать этот флаг через url: #click1, #click2.
function timer() {
setTimeout(update, 2000);
}
function update() {
var parts = location.href.split("#");
location.href = parts[0] + "#click1";
location.reload(true);
}
function FindByAttributeValue() {
var All = document.getElementsByTagName("a");
for (var i = 0; i < All.length; i++) {
if (/\.*Персонаж\.*/.test(All[i].innerHTML)) {
return All[i]
}
}
}
function goLink() {
var link = FindByAttributeValue();
if (link === undefined) {
alert("Ссылка не найдена");
timer();
}
window.location.href = link.href + "#click2";
}
window.onload = function () {
var item = location.hash;
if (item == "#click1") {
goLink();
} else {
timer();
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости