6

現在、次のコードがあります。

<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>

実際には、背景の div のどこかをクリックすると、JavaScript が実際のリンクのクリックをシミュレートし、目的のページに移動します。

ただし、ctrl キーを押しながらクリックしようとすると、ブラウザが新しいタブを開かず、代わりに現在のウィンドウに URL をロードするだけなので、これはうまく機能しません。

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

「ctrl」キーが押されていることを検出しようとするのは避けたいと思います。同様のケースがいくつかあります。このようなすべてのエッジ ケースをキャッチしようとするよりも、すべてを解決するソリューションが必要です。

4

2 に答える 2

2

これが JavaScript ではないことはわかっていますが、絶対位置のリンクを使用し、そのリンクをz-index負の数に設定して、コンテンツをクリックしてdivもリンクに移動しないようにすることをお勧めします。(Z-indexを無視するよりも、これが望ましくない場合を除きます)その後、divの背景をクリックすると、通常のリンクのように機能します. このフィドルを参照してください

ここに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;
}

リンクcursorのように見せたくない場合は、css で変更できます。div

于 2013-01-05T08:24:56.287 に答える
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;
    }
});
于 2013-01-05T07:54:53.643 に答える