Есть сайт , на котором есть определенная кнопка, href
которой меняется каждую неделю. Мне нужна закладка, которая перенаправит меня на URL-адрес в этом href
.
Я пытался использовать букмарклет, но, похоже, он не работает, так как мне нужно, чтобы страница загружалась полностью во время выполнения кода JavaScript.
Вот что у меня есть:
javascript:(function(){
window.location.href = "https://rasp.tpu.ru/site/department.html?id=7950&cource=1";
window.location.href = Array.from(document.querySelectorAll('a')).find(element => element.href.includes('gruppa_42148')).href
})();
Я попытался дождаться загрузки сайта:
javascript:(function(){
window.location.href = "https://rasp.tpu.ru/site/department.html?id=7950&cource=1";
window.addEventListener('load', function () { window.location.href = Array.from(document.querySelectorAll('a')).find(element => element.href.includes('gruppa_42148')).href })
})();
Но это не работает. Как я понимаю, с букмарклетом это просто невозможно, нельзя запустить скрипт на одной странице, затем перейти на другую и попытаться получить содержимое этой страницы, чтобы продолжить выполнение чего-то в скрипте.
Еще я подумывал написать в Tampermonkey скрипт, который будет запускаться только тогда, когда я захожу на этот сайт с определенной закладки, но опять же понятия не имею, как это сделать.
Можете ли вы создать на своем веб-сайте страницу, которая просто перенаправляет URL-адрес текущей страницы?
@Barmar Это не мой сайт. Я неправильно выразился, извините, это не мой родной язык.
Какую часть работы с Tampermonkey ты не понимаешь? Когда вы создаете сценарий tampermonkey, вы можете указать веб-страницы, на которых он должен работать, чтобы сделать его только для веб-сайта. Я думаю, что затем он сможет использовать location.href=new_href
для перенаправления на обновленный href.
@Barmar Мне не нужно всегда запускать скрипт на веб-сайте. Иногда мне нужно посетить его без автоматического перенаправления. Поэтому мне нужно запускать скрипт только тогда, когда я захожу на этот сайт через закладку, которую я не знаю как проверить.
Это кажется сложным. Я не уверен, как бы вы написали что-то подобное.
можете ли вы опубликовать адрес сайта?
@GTK Вот, ссылка
@JohnSnow какая кнопка меняется каждую неделю?
@mplungjan Попробовал наблюдатель мутаций, но, похоже, он не работает. И про запуск букмарклета после загрузки страницы. Я могу сделать это, сначала открыв веб-страницу, а затем щелкнув букмарклет, но это не то, что мне нужно. Я хочу сделать это за один раз, просто нажав на закладку. Ожидание загрузки страницы в скрипте тоже не работает.
@GTK Тот, который, по-моему, говорит по-английски «8ПМ4Л» или «8PM4L». Там куча кнопок с цифрами и буквами, они все по сути одинаковые. Все они перенаправляют вас на еженедельное расписание, текущий URL которого меняется каждую неделю.
@JohnSnow, кажется, меняется только номер недели? это gruppa_42148
изменится?
@GTK Нет, gruppa_42148
не меняется, но год тоже иногда меняется.
Букмарклет работает в пределах страницы. После первого window.location.href страницы больше нет, так что это никогда не сработает. Вы можете выполнять эти два действия только друг за другом, используя скрипт браузера или прокси-сервер.
На этой странице на самом деле есть ссылка, которая выглядит как ссылка перенаправления сервера на страницу календаря:
Вы также можете делать с tampermonkey все, что хотите:
// ==UserScript==
// @name bookmark
// @namespace http://tampermonkey.net/
// @version 2024-09-04
// @description .
// @author You
// @match https://rasp.tpu.ru/site/department.html?id=7950&cource=1
// @icon https://www.google.com/s2/favicons?sz=64&domain=tpu.ru
// @grant none
// ==/UserScript==
if (location.hash === '#bookmark'){
const a = document.querySelector('a[href*=gruppa_42148]');
a && location.replace(a.href);
}
это будет перенаправление только в том случае, если URL-адрес содержит хэш #bookmark
.
и используйте это как URL-адрес закладки:
https://rasp.tpu.ru/site/department.html?id=7950&cource=1#bookmark
Спасибо, оба сработали. Но первый быстрее, так как загружается только одна страница, буду использовать эту.
И можно ли спросить. Как вы нашли эту ссылку. Вы только что просмотрели сайт или есть какой-то способ отследить это?
@JohnSnow да, просто просмотрел страницу календаря, нажал 09.04.04 Программная инженерия , затем в группах вы можете найти 8ПМ4Л
Поэтому запустите букмарклет после загрузки страницы или добавьте в букмарклет наблюдателя за мутациями.