Block Opener on Targeted Links

Add rel attribute values on mouseup to block window.opener in the linked site, also blocks referer (2016-09-01)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name        Block Opener on Targeted Links
// @namespace   JeffersonScher
// @description Add rel attribute values on mouseup to block window.opener in the linked site, also blocks referer (2016-09-01)
// @author      Jefferson "jscher2000" Scher
// @copyright   Copyright 2016 Jefferson Scher
// @license     BSD 3-clause
// @include     *
// @version     0.5
// @grant       none
// ==/UserScript==

// Check what was clicked and rel it up if needed
function BOoTL_relfix(evt){
  // is it always a link? are there other cases?
  var tgt = evt.target;
  if (tgt.nodeName != "A") return;
  // did we already hack it?
  if (tgt.hasAttribute("bootl")) return;
  // is it different origin?
  if (tgt.hostname == location.hostname) return;
  // does it have a target not replacing the page?
  var tgtatt = tgt.getAttribute("target") || "_self";
  if ("_self|_parent|_top".indexOf(tgtatt) > -1) return;
  // OKAY THEN add rel values + mark as modified
  var oldrel = tgt.getAttribute("rel") || "";
  tgt.setAttribute("rel", "noopener noreferrer "+oldrel);
  tgt.setAttribute("bootl", tgt.getAttribute("rel"));
}
// Add click event listener to the body
document.body.addEventListener("mouseup", BOoTL_relfix, false);