Ich möchte diese Zeichenfolge anhängen:
&sp=CAASAhAB
Jedes Mal, wenn eine YouTube-Suchanfrage durchgeführt wird, soll dieser dumme Abschnitt „Nutzer haben auch angesehen“ entfernt werden.
Ich habe ein Tampermonkey-Skript erstellt, das ziemlich gut funktioniert, aber nicht funktioniert, wenn die Suche über das Suchfeld der Website durchgeführt wird.
Kann mir jemand helfen? Eine Lösung wäre für die Nachwelt großartig.
Hier ist das TamperMonkey-Skript:
// ==UserScript==
// @name Youtube - Remove "People Also Watched" section from search results.
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Add "&sp=CAASAhAB" to YouTube search results URL if not already present. Recommended to also use https://github.com/Vulpelo/hide-youtube-shorts
// @author MattFor | @mattfor | https://github.com/MattFor
// @match www.youtube.com/results?search_query=*
// @grant none
// ==/UserScript==
(function () {
"use strict";
function containsString(mainString, subString) {
return mainString.indexOf(subString) !== -1;
}
function updateURL() {
var currentURL = window.location.href;
var queryString = "&sp=CAASAhAB";
if (!containsString(currentURL, queryString)) {
window.location.href += queryString;
}
}
updateURL();
window.addEventListener("beforeunload", updateURL);
window.addEventListener("DOMContentLoaded", updateURL);
})();
Bearbeitung #1: Habe meinen Code auf Basis der Kommentare zur Frage aktualisiert, aber es gibt keine wesentlichen Verbesserungen, es sieht so aus, als ob die YouTube POST-Anfrage nur gesendet wirdeinmalgemessen an der Registerkarte „Netzwerk“.
// ==UserScript==
// @name Youtube - Modify search request
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Add "&sp=CAASAhAB" to YouTube search results URL if not already present.
// @author MattFor | @mattfor | https://github.com/MattFor
// @match www.youtube.com/results?search_query=*
// @grant none
// ==/UserScript==
(function () {
"use strict";
function containsString(mainString, subString) {
return mainString.indexOf(subString) !== -1;
}
function updateURL() {
var currentURL = window.location.href;
var queryString = "&sp=CAASAhAB";
if (!containsString(currentURL, queryString)) {
window.location.href += queryString;
}
}
function modifySearchForm() {
var searchForm = document.getElementById("search-form");
if (searchForm) {
searchForm.addEventListener("submit", function (event) {
event.preventDefault();
var formAction = searchForm.action;
var modifiedAction = formAction + "&sp=CAASAhAB";
searchForm.action = modifiedAction;
searchForm.submit();
});
}
}
updateURL();
modifySearchForm();
window.addEventListener("beforeunload", updateURL);
window.addEventListener("DOMContentLoaded", function () {
updateURL();
modifySearchForm();
});
})();
Antwort1
Ich habe Tampermonkey noch nie verwendet, aber ich werde versuchen, Ihr Skript so zu ändern, dass dies funktioniert.
Das Problem besteht meines Erachtens darin, dass die Suchfunktion durch ein Tag gesteuert wird . Wenn man das weiß, sollte das Ziel darin bestehen, diesen Parameter in der URL so <form action=""></form>
zu ändern, dass er den URL-Parameter anhängt.action
sp=CAASAhAB
DassollenTu es:
// ==UserScript==
// @name Youtube - Remove "People Also Watched" section from search results.
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Add "&sp=CAASAhAB" to YouTube search results URL if not already present. Recommended to also use https://github.com/Vulpelo/hide-youtube-shorts
// @author MattFor | @mattfor | https://github.com/MattFor
// @match www.youtube.com/results?search_query=*
// @grant none
// ==/UserScript==
(function () {
"use strict";
function containsString(mainString, subString) {
return mainString.indexOf(subString) !== -1;
}
function updateURL() {
////////////////////////////////////////////////
// Append the URL parameter to the URL.
var currentURL = window.location.href;
var queryString = "&sp=CAASAhAB";
if (!containsString(currentURL, queryString)) {
window.location.href += queryString;
}
////////////////////////////////////////////////
// Append the URL parameter to the form action.
var formAction = document.getElementById("search-form").action;
var queryParam = "?sp=CAASAhAB";
if (!containsString(formAction, queryParam)) {
document.getElementById("search-form").action += queryParam;
}
}
updateURL();
window.addEventListener("beforeunload", updateURL);
window.addEventListener("DOMContentLoaded", updateURL);
})();
Wenn es nicht funktioniert, müssen Sie das Absenden des Formulars möglicherweise wie folgt abfangen: Pseudocode basierend auf diesemStack Overflow-Antwort:
document.querySelector("#search-form").addEventListener("submit", function(e) {
e.preventDefault()
e.submitter.formAction += "&sp=CAASAhAB";
this.submit();
})
Oder eine leichte Variante basierend auf diesem anderenStack Overflow-Antwort
document.querySelector("#search-form").addEventListener("submit", function(e) {
e.preventDefault();
button.setAttribute("action", this.getAttribute("action") += "&sp=CAASAhAB");
// Or try this instead of the above.
// this.action += "&sp=CAASAhAB";
this.submit();
});