2012-02-29 24 views
1

現在のページで開くか、コマンド/ ctrlをクリックしたときなどに新しいタブ/ウィンドウで開くリンクを取得しようとしていますユーザーの設定に基づいています。今、私はこのような何か使用しています:新しいタブ/ウィンドウで開く機能を備えたJavascriptリンク

<a href='http://example.com' onclick="setTimeout(function() {window.location='/some_local_page'}, 10); return false;">Foo!</a> 

をこれは私がリンクをクリックすると、それは地元のページを開いていることができますが、私は明示的に右クリックする必要がありますし、新しいタブ/ウィンドウで開く]を選択します。私はこれが解決された問題だと確信していますが、Google/stackoverflowキーワードの適切な組み合わせを見つけることができません。 :)

これは、明確化のために役立つかもしれない

:クリックがsome_javascript_function(呼び出す必要があります。この場合

<a href='http://example.com' onclick="some_javascript_function(); return false;">Foo!</a> 

)と新しいタブで「http://example.com」を開く必要があり、コマンド/ Ctrlを押しながらクリック/ windowと現在のページに何もしません。

+2

なぜ何かを何かしようとしていますか?これは、ほぼすべてのブラウザで既定の動作です。 falseを返さず、window.locationビジネスを使用せず、クリックのデフォルト動作をオーバーライドしない場合は、これは自動的に機能するはずです。 –

+0

あなたは何をしようとしていますか?なぜあなたは 'setTimeout'を使って私がクリックしたリンクとはまったく異なるページにリダイレクトしていますか?私は困惑している。どのリンクを開きたいのですか?どこで開きたいのですか?あなたの 'onclick'は' return false'を持っています。これは、ブラウザがリンクをたどるのを普通に止めます。 –

+1

デフォルトのブラウザの動作が乱れることは、ほとんど常に悪い考えのように聞こえます。 – kirilloid

答えて

7

これは必要なものですか?

<a href="http://example.com" onclick="window.open('/some_local_page')">Foo!</a> 

またはこれは?

<a href="/some_local_page" target="_blank">Foo!</a> 

EDIT:onclick(右ボタンではなく)中央または左ボタンがクリックされたときに発生します。

したがって、onclickでは、ctrlが押されたのか、それとも中央のボタンであったのかを検出する必要があります。

JavaScriptをインラインで配置しないこともお勧めします。

<a href="http://example.com" class="link" data-link="/some_local_page">Foo!</a>​ 

$('a.link').click(function(e){ 
    if(e.button === 0 && !e.ctrlKey){ // Click without ctrl 
     e.preventDefault(); 
     // open local page 
     window.location = $(this).data('link'); 
    } 
    // Middle click and ctrl click will do nothing, 
    // thus allowing the brower to open in a new window 
});​ 

DEMO::このお試しくださいあなたが同じURLに移動したい場合は、そのhref属性で同じURLをレンダリングされないのはなぜhttp://jsfiddle.net/E8hEt/

+0

最初の1つは、それは間違いなく私が探している動作ではありません。リンクをクリックすると、/ some_local_pageに新しいタブが表示され、現在のページが "http://example.com"に移動します。コマンド/ ctrlをクリックすると、新しいウィンドウが開きます。 – Nik

+0

第2の場合は、上記を参照してください。 – Nik

+0

@Nik:あなたは何をしたいのですか? –

1

を?。新しいウィンドウで開くには、ターゲットを_blankに設定します。

<a href='/some_local_page' target='_blank'>Foo!</a> 
+0

新しいウィンドウで/ some_local_pageを開くだけではありません。現在のウィンドウで/ some_local_pageを開き、別のタブ/ウィンドウで "http://example.com"を開いて、ユーザーのコマンド/コントロールがリンクをクリックしたければします。 – Nik

+0

@Downvoter - -1の理由も残してもいいですか? – ShankarSangoli

関連する問題