// ==UserScript== // @name Pop Facebook Hash Tags // @namespace http://www.emsquared-inc.com/ // @version 1.5.5 beta // @description Makes hashtag links open in a new window or tab // @author Eric Mintz // @oujs:author emsquared-inc // @license GNU GPL v3.0; https://github.com/emsquared-inc/PopFacebookHashTags/blob/gh-pages/LICENSE // @homepageURL http://www.emsquared-inc.com // @supportURL https://github.com/emsquared-inc/PopFacebookHashTags // @match https://www.facebook.com/* // @match https://www.facebook.com // @grant none // @downloadURL none // ==/UserScript== (function() { var addListener = function(element,eventName,listener){ if(element.addEventListener){ element.addEventListener(eventName, listener); }else{ element.attachEvent('on'+eventName, listener); } }; var removeListener = function(element, eventName, listener){ if(element.removeEventListener){ element.removeEventListener(eventName, listener); }else{ element.detachEvent('on'+eventName, listener); } }; // Manage handlers addEventListeners = function() { addListener(document,'load',fixFacebookLinks); addListener(document,'DOMNodeInserted',fixFacebookLinks); }; removeEventListeners = function() { removeListener(document,'load',fixFacebookLinks); removeListener(document,'DOMNodeInserted',fixFacebookLinks); }; // Modify hashtag links var fixFacebookLinks = function() { // remove handlers to prevent recursion removeEventListeners(); // find hashtag links var allLinks = document.getElementsByTagName('a'); for (var i = 0; i < allLinks.length; i++) { if (allLinks[i].href && allLinks[i].href.contains('/hashtag/')) { // make the linke pop open a new brower window/tab allLinks[i].setAttribute('target','_blank'); } } // restore the handlers setTimeout(function() {addEventListeners();},3000); }; // Add listeners addEventListeners(); })();