webでとあるページを作っています。
最終的な目標は、「リンクをクリックするとき、別タブ・別ウィンドウで開かせず、そのタブ内でのみ遷移させたい」ということです。
このようなソースを書きました。
function alt() {
window.alert("右クリック禁止");
}
document.onclick = function( e ){
var event = e || window.event;
var tagName = '';
try{
tagName = (event.target || event.srcElement).tagName.toLowerCase();
}
catch(e){}
if( (event.shiftKey || event.ctrlKey) && tagName == 'a' ){
window.alert("別ウィンドウ禁止");
event.keyCode = 0;
event.returnValue = false;
event.cancelBubble = true;
return false;
}
}
function mouseListener(evt){
var bt=(document.all)?(event.button==1?0:(event.button==4)?1:event.button):evt.button;
if(bt==1){ window.alert("中ボタン禁止");return false; }
}
document.onmousedown=mouseListener;
・
・
・
・
・
・
このソースでFirefox、Chrome、Opera、Safariでは思い通りの挙動になったのですが、IE11では思い通りになりません。
むしろ今回はIEで使ってもらう予定なので、ほかのブラウザでは動かなくてもいいからIEでだけ開かないようになってほしいというところです。
さて、具体的にIEだとどうなるかですが、
function alt()・・・これはOK。
document.onclick = function( e ){
・・・「ShiftKey」のときはアラートが出て、きちんと止まるのですが、「ctrlKey」のときがウィンドウが開いてしまいます。
こちらに関しては、
function checkCTRLKey() {
var tagName = '';
try{
tagName = (event.target || event.srcElement).tagName.toLowerCase();
}
catch(e){}
if ((event.ctrlKey) && tagName == 'a' ) alert("別ウィンドウ禁止");return false;
}
window.document.onkeydown = checkCTRLKey;
と言うのを別に作ると、なぜかきちんと止まります(「shiftKey」にも影響を及ぼしません)。
function mouseListener(evt){
・・・これだけが本当にどうにもなりません。
「document.onmousedown=mouseListener」となっていますので、押した瞬間はアラートが出てウィンドウも当然開かないのですが、離した瞬間ウィンドウが開いてしまいます(当然と言えば当然ですが)。
document.onmousedown=mouseListener;
document.onmouseup=mouseListener;
と二つ並べるのも試しましたが、アラートが二つ出るだけでやはりウィンドウが開いてしまいます。
(ちなみに中クリックでリンクをクリックし、アラート小窓が出たときにその小窓の上でマウスを離すと別ウィンドウでは開かないようです)
こんな感じなのですが、どうにかなりますでしょうか。
かいつまんで言うと「IEで、中ボタンでリンクをクリックしても別タブ・別ウインドウで開かないようにしたい」と言うところです。
どうぞよろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/19 23:59