2011-10-28 19 views

答えて

36

Webブラウザが自動的に新しいタブに焦点を当てていますが、バックフォーカスを呼び出すことができます。

function openWindow(url) 
{ 
    window.open(url, '_blank'); 
    window.focus(); 
} 

<a href="http://www.example.com/" onclick="javascript:openWindow(this.href);return false;">Click Me</a> 
+1

Re 'focus':私の経験ではありません。とにかくChromeではなく(http://jsbin.com/aboluk/2)、試してもそれほど害はない。 –

+0

@ T.J.Crowder:実際にはChrome 15で私にとってはうまくいきます。 – josh3736

+3

@ josh3736:面白いです。私はまだ14(Linux上)にいるし、そうではありません。基本的には:あなたはそれに頼ることはできません。 :) –

10

残念ながら、現在のところ実行できませんが、近づくことはできます。新しいウィンドウを開くことができます。ウィンドウの寸法やウィンドウの機能を指定せずにこれを行うと、最新のブラウザでは新しいタブが代わりに開きます(ただし、ユーザーの好みにもよりますが、とにかく、そう?)。あなたが何かの名前を使うつもりならば、ちょうどwindow.open(url)またはwindow.open(url, name)。これは、ユーザーが開始したイベントに直接応答してください。そうしないと、ブラウザのポップアップブロッカーがポップアップをブロックする可能性があります。 :-)

あなたのウィンドウにフォーカスを維持に関して

Live example

...それで幸運。 window.open(...)の後にwindow.focus()に電話をかけることができますが、私の経験では通常は動作しません。

あなたがURLとの真のリンクを使って対話することをユーザーが行う場合、ユーザーは、それを新しいタブ、新しいウィンドウ、それを与えるかどうか、そしてそれを開くかどうかを決定できますフォーカス(Shift +クリック、Ctrl + Shift +クリック、または右クリックメニューを知るのに十分精巧であれば)。

+0

IEでは、これは新しいタブではなく新しいウィンドウで開きます。 – josh3736

+0

@ josh3736:使用しているIEのバージョンや、新しいバージョンの設定によって異なります。 –

+0

IE9でその設定を変更したことを忘れました。具体的には、オプション>タブ設定> "IEがポップアップを開く方法を決定する"が変更されない限り、 'window.open()'はIEで新しいタブを生成します。 – josh3736

2

これはユーザー固有の設定であり、JSからこの動作を変更することはできません。

3

残念ながら、あなたはすべてのブラウザでこれを行うことはできませんが、場合は、Chromeでこれを行うことができますブラウザの拡張機能を実装する。ジャバスクリプトによってChromeでタブを操作する方法 :

http://code.google.com/chrome/extensions/tabs.html

chrome.tabs.create(object createProperties, function callback) 
    Creates a new tab. Note: This function can be used without requesting the 'tabs' permission in the manifest. 
Parameters 
    **createProperties** (object) 
    **windowId** (optional integer) 
     The window to create the new tab in. Defaults to the current window. 
    **index** (optional integer) 
     The position the tab should take in the window. The provided value will be clamped to between zero and the number of tabs in the window. 
    **url** (optional string) 
     The URL to navigate the tab to initially. Fully-qualified URLs must include a scheme (i.e. 'http://www.google.com', not 'www.google.com'). Relative URLs will be relative to the current page within the extension. Defaults to the New Tab Page. 
    **selected** (optional boolean) 
     Whether the tab should become the selected tab in the window. Defaults to true 
    pinned (optional boolean) 
     Whether the tab should be pinned. Defaults to false 
    **callback** (optional function) 
1
(function(a){ 
document.body.appendChild(a); 
a.setAttribute('href', location.href); 
a.dispatchEvent((function(e){ 
    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null); 
    return e 
}(document.createEvent('MouseEvents'))))}(document.createElement('a'))) 
1

Postは古いが任意の100%正解なしです。すべてのブラウザFOR

SOLUTION:

あなたが経由同じドメイン URLを新しいタブを開くことができます。

window.open("newurl.php", "_blank"); 

とクロスドメインの新しいタブのために、あなたは、単純なローカル・スクリプトを作成する必要があります、のようなこの新しいファイルに

「redirect.php」あなたはこの

のように(新しいタブのURLをターゲット)パラメータを渡します3210

とあなたが任意のターゲットURLを新しいタブを作成することができます。私のウェブサイトで

window.open("redirect.php?u=http://www.google.com", "_blank"); 

:)

その私の解決策を。そして

window.open("https://stackoverflow.com"); 

を使用して、私のために、任意の

1

で動作完全に働きました。これは、使用しているブラウザ、オペレーティングシステム、および個人の好みによって異なります。

Chrome、Internet Explorer、Firefoxはすべて新しいタブを開きました。これはあなたのために動作しない場合は申し訳ありません。

(これは古いスレッドだと分かります)

関連する問題