이 문자열을 추가하고 싶습니다.
&sp=CAASAhAB
YouTube 검색어가 수행될 때마다 그 멍청한 "사람들도 시청했습니다" 섹션을 제거합니다.
나는 꽤 잘 작동하지만 웹사이트의 자체 검색 상자에서 검색을 수행할 때 작동하지 않는 Tampermonkey 스크립트를 만들었습니다.
누구든지 도와줄 수 있나요? 이 문제를 해결하면 후손을 위해 좋을 것입니다.
TamperMonkey 스크립트는 다음과 같습니다.
// ==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);
})();
편집 #1: 질문에 대한 의견을 바탕으로 내 코드를 업데이트했지만 중요한 업그레이드는 없습니다. YouTube POST 요청만 전송된 것 같습니다.한 번네트워크 탭으로 판단합니다.
// ==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();
});
})();
답변1
나는 이전에 Tampermonkey를 사용한 적이 없지만 이를 처리하기 위해 스크립트를 수정해 보겠습니다.
문제는 검색 기능이 태그에 의해 제어된다는 것입니다 <form action=""></form>
. 이를 아는 목표는 action
URL에서 해당 매개변수를 수정하여 sp=CAASAhAB
URL 매개변수를 추가하는 것입니다.
이것~해야 한다해:
// ==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);
})();
작동하지 않으면 다음과 같이 양식 제출을 가로챌 수 있습니다. 이를 기반으로 한 의사 코드스택 오버플로 답변:
document.querySelector("#search-form").addEventListener("submit", function(e) {
e.preventDefault()
e.submitter.formAction += "&sp=CAASAhAB";
this.submit();
})
또는 이것에 기초한 약간의 변형스택 오버플로 답변
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();
});