#javascript #html #tampermonkey
Вопрос:
Я хочу изменить значения кнопок на странице с помощью Tampermonkey, но я не могу изменить его, потому что в нем говорится, что кнопка не определена?
HTML-часть
<div class="playbackRateButtons">
<span>Playback Speed : </span>
<button class="btn blue" value="0.5">0.5X</button>
<button class="btn blue" value="0.75">0.75X</button>
<button class="btn blue active" value="1">1X</button>
<button class="btn blue" value="1.25">1.25X</button>
<button class="btn blue" value="1.5">1.5X</button>
</div>
Мой Скрипт Tampermonkey
// ==UserScript==
// @name Auto Change Speed
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match *://xxxxxx/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_xmlhttpRequest
// @connect xxxxxx.html
// ==/UserScript==
GM_xmlhttpRequest ( {
method: "GET",
url: "https://xxxxxx.html",
onload: changeSpeed()
});
function changeSpeed(response) {
var btns = document.getElementsByClassName("btn blue");
var speed = ["1", "2", "3", "5", "10"];
for (var i=0; i<5; i ) {
btns[i].value = speed[i];
btns[i].innerHTML = speed[i] "X";
}
}
Комментарии:
1. Являются ли рассматриваемые кнопки на веб-странице, на которой запускается этот скрипт? Если да, являются ли они частью источника HTML или они динамически добавляются сценариями на веб-странице?
2. Они являются частью исходного кода HTML.
3. Повторяется ли цикл for несколько раз, прежде чем создать ошибку, или он сразу же прерывается на первом элементе? (В чем заключается конкретное сообщение об ошибке?)
4.Это сообщения об ошибках в консоли. imgur.com/J3hxEg2 imgur.com/ITc7ohB И это сразу же вызывает ошибку по первому пункту.
Ответ №1:
Я изменил вашу changeSpeed
функцию. Он пытается выбрать кнопки с интервалом в 1 секунду (возможно, вы захотите обновить этот интервал). Если найдено clearInterval
, вызывается и выполняется остальная часть кода.
function changeSpeed(response) {
var intervalID = setInterval(function () {
var btns = document.getElementsByClassName("btn blue");
if (btns.length > 0) {
clearInterval(intervalID);
var speed = ["1", "2", "3", "5", "10"];
for (var i = 0; i < btns.length; i ) {
btns[i].value = speed[i];
btns[i].innerHTML = speed[i] "X";
}
}
}, 1000);
}