Добавить в закладки, URL-адрес которых загружается с сайта

Есть сайт , на котором есть определенная кнопка, 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 скрипт, который будет запускаться только тогда, когда я захожу на этот сайт с определенной закладки, но опять же понятия не имею, как это сделать.

Поэтому запустите букмарклет после загрузки страницы или добавьте в букмарклет наблюдателя за мутациями.

mplungjan 04.09.2024 14:09

Можете ли вы создать на своем веб-сайте страницу, которая просто перенаправляет URL-адрес текущей страницы?

Barmar 04.09.2024 17:23

@Barmar Это не мой сайт. Я неправильно выразился, извините, это не мой родной язык.

John Snow 04.09.2024 18:44

Какую часть работы с Tampermonkey ты не понимаешь? Когда вы создаете сценарий tampermonkey, вы можете указать веб-страницы, на которых он должен работать, чтобы сделать его только для веб-сайта. Я думаю, что затем он сможет использовать location.href=new_href для перенаправления на обновленный href.

Barmar 04.09.2024 18:46

@Barmar Мне не нужно всегда запускать скрипт на веб-сайте. Иногда мне нужно посетить его без автоматического перенаправления. Поэтому мне нужно запускать скрипт только тогда, когда я захожу на этот сайт через закладку, которую я не знаю как проверить.

John Snow 04.09.2024 19:01

Это кажется сложным. Я не уверен, как бы вы написали что-то подобное.

Barmar 04.09.2024 19:05

можете ли вы опубликовать адрес сайта?

GTK 04.09.2024 19:25

@GTK Вот, ссылка

John Snow 04.09.2024 19:34

@JohnSnow какая кнопка меняется каждую неделю?

GTK 04.09.2024 19:49

@mplungjan Попробовал наблюдатель мутаций, но, похоже, он не работает. И про запуск букмарклета после загрузки страницы. Я могу сделать это, сначала открыв веб-страницу, а затем щелкнув букмарклет, но это не то, что мне нужно. Я хочу сделать это за один раз, просто нажав на закладку. Ожидание загрузки страницы в скрипте тоже не работает.

John Snow 04.09.2024 19:55

@GTK Тот, который, по-моему, говорит по-английски «8ПМ4Л» или «8PM4L». Там куча кнопок с цифрами и буквами, они все по сути одинаковые. Все они перенаправляют вас на еженедельное расписание, текущий URL которого меняется каждую неделю.

John Snow 04.09.2024 20:05

@JohnSnow, кажется, меняется только номер недели? это gruppa_42148 изменится?

GTK 04.09.2024 20:34

@GTK Нет, gruppa_42148 не меняется, но год тоже иногда меняется.

John Snow 04.09.2024 20:40

Букмарклет работает в пределах страницы. После первого window.location.href страницы больше нет, так что это никогда не сработает. Вы можете выполнять эти два действия только друг за другом, используя скрипт браузера или прокси-сервер.

mplungjan 05.09.2024 07:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
14
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

На этой странице на самом деле есть ссылка, которая выглядит как ссылка перенаправления сервера на страницу календаря:

https://go.tpu.ru/VJSufWbM > https://rasp.tpu.ru/redirect/kalendar.html?hash=1Xyu9g > https://rasp.tpu.ru/ gruppa_42148/2024/1/view.html


Вы также можете делать с 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

Спасибо, оба сработали. Но первый быстрее, так как загружается только одна страница, буду использовать эту.

John Snow 05.09.2024 06:56

И можно ли спросить. Как вы нашли эту ссылку. Вы только что просмотрели сайт или есть какой-то способ отследить это?

John Snow 05.09.2024 07:03

@JohnSnow да, просто просмотрел страницу календаря, нажал 09.04.04 Программная инженерия , затем в группах вы можете найти 8ПМ4Л

GTK 05.09.2024 17:15

Другие вопросы по теме

Похожие вопросы

Линейчатая диаграмма ChartJS — изменение легенды
HTML-страница постоянно обновляется
Невозможно перемещаться по HTML-странице через веб-приложение (скрипт Google Apps)
Регулярное выражение для проверки того, содержит ли ввод две заданные строки, а часть между ними не содержит ни одного элемента из набора указанных строк
В файле location.href намеренно отсутствуют имя пользователя и пароль при включении в URL-адрес?
Расширение не загружается в коде Visual Studio — сообщения об отладке не отображаются
Как добавить учащегося (@gmail.com) в класс Classroom, созданный внутри моей организации с помощью Apps Script?
При использовании parseFloat невозможно вычислить сумму более 1 миллиона
Используйте предопределенный массив строковых значений для querySelectorAll, чтобы выполнить определенное действие
Как правильно использовать делегирование событий вместо добавления второго одновременного прослушивателя событий для того же типа событий?