リンクを左ボタン長押しによって新規タブに開きたい
きっかけは、これ。
http://d.hatena.ne.jp/rikuba/20100403/1270228018
自分なりに書いてみた。やはりというか、イベントを外すのが面倒。
<!DOCTYPE html> <title>リンクを左ボタン長押しによって新規タブに開きたい</title> <style type="text/css"> </style> <body> <h1><a href="#">新しいページに移る</a></h1> <script> (function (wait) { //@cc_on var timer; var handler = function (evt/*EventObject*/) { var w, n; switch (evt.type) { case 'mousedown' : n = evt./*@if (1) srcElement @else@*/ target /*@end@*/; if ('A' === n.nodeName) timer = + new Date; break; case 'click' : n = evt./*@if (1) srcElement @else@*/ target /*@end@*/; if ('A' === n.nodeName) { if (wait < ((+ new Date) - timer)) { w = n.ownerDocument./*@if (1) parentWindow @else@*/ defaultView /*@end@*/.open (n.href); return evt./*@if (1) returnValue = false @else@*/ preventDefault () /*@end@*/; } } break; case 'unload' : document./*@if (1) detachEvent ('on' + @else@*/ removeEventListener (/*@end@*/ 'mousedown', handler, false); document./*@if (1) detachEvent ('on' + @else@*/ removeEventListener (/*@end@*/ 'click', handler, false); /*@if (1) attachEvent ('on'+ @else@*/ addEventListener (/*@end@*/ 'unload', handler, false); break; } }; var init = function () { document./*@if (1) attachEvent ('on'+ @else@*/ addEventListener (/*@end@*/ 'mousedown', handler, false); document./*@if (1) attachEvent ('on'+ @else@*/ addEventListener (/*@end@*/ 'click', handler, false); /*@if (1) attachEvent ('on'+ @else@*/ addEventListener (/*@end@*/ 'unload', handler, false); }; this.achorSwitcher = init; })(500); achorSwitcher (); </script>