var targetKiller = { newTargets: new RegExp(/^_?(blank|new)$/i), adjustTargetAttribute: function(element, names) { var target = element.getAttribute('target'); if (!target || target == '_top') return; if (!names[target]) { if (this.newTargets.test(target)) element.setAttribute('target', '_top'); else element.removeAttribute('target'); } }, adjustTargetAttributes: function(elements, names) { for (var i = 0; i < elements.length; i++) this.adjustTargetAttribute(elements[i], names); }, getWindowNames: function(window, names) { if (window.name) names[window.name] = 1; for (var i = 0; i < window.frames.length; i++) this.getWindowNames(window.frames[i], names); }, init: function() { var appcontent = window.document.getElementById("appcontent"); appcontent.addEventListener("DOMContentLoaded", function(event) { var window = event.target.defaultView; var document = event.target; var names = []; targetKiller.getWindowNames(window.top, names); //targetKiller.adjustTargetAttributes(document.links, names); targetKiller.adjustTargetAttributes(document.forms, names); }, true); appcontent.addEventListener("mousedown", function(event) { var window = event.target.defaultView; var node = event.target; while (node) { if (node.nodeName == 'A') { var names = []; targetKiller.getWindowNames(window.top, names); targetKiller.adjustTargetAttribute(node, names); break; } } }, true); } }; targetKiller.init();