Untarget _blank

Murderise target="_blank"

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

Advertisement:

// ==UserScript==
// @name        Untarget _blank
// @namespace   https://git.sr.ht/~remph
// @include     *
// @grant       none
// @version     0.2
// @author      Remph
// @description Murderise target="_blank"
// @license     GPL-3.0-or-later
// ==/UserScript==

function unblank(root) {
	root.querySelectorAll(
		'a[target="_blank"], base[target="_blank"]' // form[target="_blank"]
	).forEach((a) => a.setAttribute('target', '_self')); // could also removeAttribute
}

(function() {
	unblank(document.body); // run straight away to unblank static content
	// hang around in the background to keep interfering
	new MutationObserver(
		(muts) => muts.forEach((mut) => unblank(mut.target))
	).observe(document.body, {
		subtree: true, childList: true, attributes: true
	});
})();