2013-01-05 10 views
6

を生み出すJavascriptを/ jQueryの内のリンクをクリックをシミュレートする、私は次のコードを持って:あなたは、バックグラウンドのdivの任意の場所をクリックすると、Javascriptがシミュレートされます、効果的今、通常のブラウザの動作

<script> 
$("#clickme").click(function(){ 
    $("#clicker").click(); 
}); 
</script> 
<div id="clickme" style="height:20em; width:20em;"> 
    <a id="clicker" href="http://www.google.com"> Link </a> 
</div> 

を実際のリンクをクリックし、リンク先のページに移動します。

しかし、ブラウザが新しいタブを開くのではなく、現在のウィンドウにURLを読み込むので、Ctrlキーを押しながらクリックするとうまく動作しません。

この動作の代わりに、背景がクリックされたときに通常のブラウザ動作(新しいタブを開く、Ctrlキーを押したままクリックして現在のウィンドウを変更しない)をしたいです。 Javascript/jQueryでこれを行う方法はありますか?

「ctrl」キーが押されているのを検出しようとしないことをお勧めします。類似したケースがいくつかあります。このようなすべてのケースを検出するのではなく、すべてを解決するソリューションが必要です。

+0

この質問を読むことを検討する:http://stackoverflow.com/questions/7867329/jquery-open-url-in-new-tab –

答えて

2

(これを制御することはできません、新しいウィンドウやタブのいずれか)これを実行する関数を...もちろん

function open_url(url) { 
    if (flag) { 
     window.open(url, '_blank'); 
     window.focus(); 
    } else { 
     window.location.href = url; 
    } 
} 

、あなたはCtrlキーキー入力をキャプチャする必要があります...

$(window).keypress(function(event) { 
    if (event.ctrlKey) { 
     // set flag 
     flag = true; 
    } else { 
     // unset flag 
     flag = false; 
    } 
}); 
2

私は、これはjavascriptのではない知っているが、私は良い解決策は、絶対位置のリンクを使用して設定することであろうと思い、そのdivでコンテンツをクリックするとに行くことはありませんように、負の数にz-indexリンク。 (これは単にz-indexを無視するよりも望ましくない場合を除きます)。そして、divの背景をクリックすると、通常のリンクのようになります。ここでは、このfiddle

は、あなたはそれがdivのように見えるしたくない場合は、CSSでcursorを変更することができますHTML

<div id="clickme"><a id="clicker" href="http://suu.edu"></a><p>text text</p></div> 

そしてCSS

#clickme{ 
    position: relative; 
    width: 500px; 
    height: 500px; 
    border: 1px solid #000; 
    z-index: 1; 
} 

#clicker{ 
    position: absolute; 
    width: 100%; 
    height: 100%; 
    z-index: -1; 
} 

がリンクされている参照してください。 。

関連する問題