Скрипт для Violentmonkey, который автоматически добавляет что-то в конец всех URL-адресов вики?
Недавно Wikia/Fandom выпустила новый дизайн своего сайта, который выглядит совершенно ужасно, и они постепенно делают его скином по умолчанию для всех своих вики. Пользователи по-прежнему могут войти в систему и выбрать скин Oasis, но это меняет внешний вид сайта только до тех пор, пока они вошли в систему. В тот момент, когда пользователь выходит из системы или просто просматривает вики без необходимости входа в систему. в, они застряли в новом дизайне. Это можно легко исправить, добавив ?useskin=oasis в конец URL-адреса страницы Wikia, но это нужно делать каждый раз, когда вы переходите на новую страницу.
Мне нужен скрипт для Violentmonkey/Tampermonkey, который автоматически добавит ?useskin=oasis в конец всех URL-адресов викии, чтобы я мог использовать скин Oasis, даже если я не вошел в систему.
Я попытался изменить старый сценарий Youtube Polymer Disable, поскольку он выполнял аналогичное действие, но это не сработало. И я попробовал это, которое добавляет ?useskin=oasis к URL-адресу, но продолжает добавлять его неоднократно и перезагружать страницу.
// ==UserScript==
// @name Oasis Wikia
// @match *://*.fandom.com/*
// @run-at document-start
// @grant none
// ==/UserScript==
var oldUrlPath = window.location.pathname;
*/
if ( ! /\?useskin=oasis$/.test (oldUrlPath) ) {
var newURL = window.location.protocol + "//"
+ window.location.host
+ oldUrlPath + "?useskin=oasis"
+ window.location.search
+ window.location.hash
;
/*-- replace() puts the good page in the history instead of the
bad page.
*/
window.location.replace (newURL);
}
1 ответ
window.location.pathname не включает строку запроса, поэтому вы получаете бесконечный цикл.
Это USVString, содержащий начальный символ «/», за которым следует путь URL-адреса, не включая строку запроса или фрагмент.
var oldUrlPath = window.location.pathname;
! /\?useskin=oasis$/.test (oldUrlPath)
никогда не найдете то, что ищете. Вместо этого вы можете проверить location.search, а затем перестроить URL-адрес, если это необходимо. Также обратите внимание: если конвертируемый URL-адрес уже содержит строку запроса, это вызовет проблемы.
+ window.location.pathname + "?useskin=oasis"
+ window.location.search
потому что у тебя будет 2? в полученном новом URL-адресе. Если вы хотите сохранить старую строку запроса, имейте это в виду или просто удалите ее.
Это должно сработать
// ==UserScript==
// @name Oasis Wikia
// @match *://*.fandom.com/*
// @run-at document-start
// @grant none
// ==/UserScript==
if ( ! /useskin=oasis/.test(window.location.search) ) {
var newURL = window.location.protocol + "//"
+ window.location.host
+ window.location.pathname + "?useskin=oasis"
+ window.location.search.replace('?', '&')
+ window.location.hash;
/*-- replace() puts the good page in the history instead of the
bad page.
*/
window.location.replace (newURL);
}