プログラムでタブに新しいページを開く


98

SafariまたはIE7で新しいタブを使用して新しいページ開くように「強制」しようとしています

プログラム的に私は次のようなものを意味します:

window.open('page.html','newtaborsomething');

1
ポイントを取得するかどうかはわかりませんが、IEで動作するアプリを開発していて、新しいタブで新しい各ページを開きたいですか?または、リンクをクリックしたときに新しいタブを開くようにIEを設定したいだけですか?または、より多くのリンクを含むサイトを作成していて、それらを個別に開くようにしますか?Plsはそれをより明確にします。
Dungeo

あなたのすべてのコメントと回答のおかげで、これは大した問題ではなく、私の開発では問題にならないはずですが、これはクライアントのリクエストであり、知りたいだけの重要なリクエストではありません。問題は、IE7とSafariがjavascriptまたはtarget属性を使用してタブ付きのポップアップを開かないことです。
Ricardo Vega、

回答:


63

これはInternet Explorerユーザーが制御するオプションであるため、直接制御することはできません。

別のウィンドウ名でWindow.openを使用して開くページがポップアップ、などの新しいブラウザウィンドウで開きますORユーザーがそうするようにブラウザを設定した場合、新しいタブで開いています。


「ポップアップを開く方法をInternet Explorerに決定させる」オプションが選択されている場合、この決定を行うためにInternet Explorerはどのような基準を使用しますか?
Dead.Rabit 2016

113

Firefoxでは機能しますが、新しいタブを強制的に開くために、アンカーに属性target = "_ newtab"を追加できます。

<a href="some url" target="_newtab">content of the anchor</a>

JavaScriptで使用できます

window.open('page.html','_newtab');

と私はサムに部分的に同意します。ユーザーがリンクをクリックするに何が起こるかについてのヒントをユーザーに示さずに、ユーザーに新しいページまたは新しいタブを開かせてはいけません。

他のブラウザでも動作するかどうか教えてください(現時点では、Firefox以外のブラウザで試すことはできません)。

編集:ie7への参照を追加多分このリンクは役に立つかもしれません
http://social.msdn.microsoft.com/forums/en-US/ieextensiondevelopment/thread/951b04e4-db0d-4789-ac51-82599dc60405/


6
このFirefoxのヒントに感謝します。「_ newtab」と「newtab」を削除するようにTargetKillerアドオンを更新しました。:P
thenonhacker 2009年

1
私はあなたの答えを本当に感謝しますが、Firefoxがそれをすることを知っています(私によってテストされていないいくつかのテキスト、これは常に正しいとは限らないことに注意してください、新しいウィンドウまたはタブを取得する50-50のチャンスがあります)。私もこれは問題ではないと思いますが、あなたはクライアントを知っています:)
Ricardo Vega

2
これはすべてのビルド/プラットフォームに当てはまるわけではありませんが、Linux上のFirefox 3.5ではこれを複数回行うことはできません...ページに複数のtarget = "_ newtab"リンクがある場合、それらのいずれかをクリックしてください新しいタブは1つだけ表示されます...つまり、その後のクリックは、そのタブで以前に開いたものを上書きします。これは、ブラウザ固有の回避策ではなく、実際には「_newtab」という名前のタブを開いていると思います。
Rylee Corradini、2010

55
「_newtab」が意味をなさないのは、反対の文書がない限りだと思います。あなたがしていることは、名前が_newtabであるウィンドウを開くことだけです(そのため、そのターゲットとの後続のすべてのリンクが同じウィンドウで開きます)。「foo」または「bar」をターゲットにして、同じ動作を見ることができます。よく知られているターゲットは、_blank、_self、_parent、および_topのみです。 htmlcodetutorial.com/linking/_A_TARGET.html
Tom Lianza、2014年

43

以下を使用しようとしている人:

window.open('page.html', '_newtab');

本当にwindow.openメソッドを見てください。

あなたがしているのは、ブラウザに「_newtab」という名前の新しいウィンドウを開き、page.htmlをロードするように指示することだけです。ロードするすべての新しいページは、そのウィンドウにロードされます。ただし、ユーザーが新しいウィンドウではなく新しいタブで新しいページを開くようにブラウザを設定している場合は、タブが開きます。とにかく、ウィンドウまたはタブに同じ名前を使用しています。

別のページを別のウィンドウまたはタブで開く場合は、新しいウィンドウ/タブの名前を次のような別の名前に変更する必要があります。

window.open('page2.html', '_newtab2');

もちろん、新しいウィンドウ/タブの名前は、_newtab2ではなく、page1、page2、page3などの任意の名前にすることができます。


3
彼のものを知っています。'_newtab'は予約名ではありません。「_blank」は、指定されていない名前のない別のウィンドウ/タブを開く特別なものです-これは何度でも繰り返し使用できます。'_newtab'は、新しいタブ(デフォルト)またはウィンドウに付けた特定の名前であることを除いて、特別なものではありません。ブラウザは、送信したURLでブラウザを更新し続けます。
BradChesney79

14

新しいタブを使用するか新しいウィンドウを使用するかはユーザー次第であり、この動作を変更するのは開発者の仕事ではありません。できるとは思いません。

私のペットピーブ-サイトが新しいウィンドウ/タブで開くように強制するとき、私はそれを嫌います-私は自分でその決定をすることがかなりできます。特に彼らがJavaScriptでそれをするとき-それは本当に役に立たない。


1
+1 to Sam-タブまたはウィンドウで開く新しいページは、ブラウザー(およびユーザー)固有の選択です。一般に、サイトが新しいウィンドウを開いたときは嫌です。
Richard Ev

これに加えて: "strict"定義では、ユーザーを煩わせないため、有効な属性 "target"はありません。試してみましょう:validator.w3.org
guerda

4
私は家でタブのバッチを開くのが好きなので、その場合はユーザーです。例外があることを思い出させてください。
マークエッセル2010

7
サイトがアクションを強制するのは煩わしいことだと私は同意しますが、誰かがなぜそれをしたいのかという理由を考慮せずに何かをすべきではないという単純な状態には少し役に立たないと思います。サイトが新しいタブ(特に外部サイトリンク)で開くのはよくあることです。アクティブなページを新しいコンテンツに置き換えても役に立たないため、予期せぬ動作とは言えません。また、これは実際には質問に対する回答ではなく、元の投稿へのコメントとして適していると思います。
andyface

1
ユーザーのデフォルトがブラウザーごとではなく、Webアプリケーションごとの設計上の選択であると仮定すると、私は同意しません。ブラウザは、アプリケーションがサブスクライブしないデフォルトをサブスクライブできます。また、ブラウザーがユーザーにアプリケーションのデフォルト/ブラウザーのデフォルトをオーバーライドする方法を提供する場合、それは両方の長所です。ユーザー>アプリケーション>ブラウザ。
Derek Litz

8

すでに試しましたか

var open_link = window.open('','_blank');
open_link.location="somepage.html";

このクロスブラウザは互換性がありますか?IE8で動作するようで、将来のバージョンや他のブラウザーが心配です。
n00b 2013年

はい。クロスブラウザに対応しています。今まで問題はなかった:D
Thurein Soe

5

Chromeで見つけた

window.open('page.html','_newtab')

一度だけ動作します。

以下を使用できます。

window.open(ct.getNewHref(),'_newtab' + Math.floor(Math.random()*999999));

複数の新しいタブを開く。


10
Chromeで、_newtabは名前だけであり、あなたはそれが「_newtab」という名前のタブでページを開くように要求しているためだという
w00t

3

jQueryで使用するコード:

$("a.btn_external").click(function() {
    url_to_open = $(this).attr("href");
    window.open(url_to_open, '_blank');
    return false;
});

これは、子の親のクリックイベントを区別するのに役立ちます。このメソッドを使用すると、親のクリックイベントはトリガーされません。


8
単純に古いHTMLを使用しないのはなぜですか?<a href="page.html" target="_blank">foo</a>
pixelastic、2012年

1
@pixelastic「このメソッドを使用すると、親のクリックイベントはトリガーされません。」
マイケルブラックバーン


0

少しハッキーですが、必要な機能を提供するこのメソッドを使用したい場合:

jQuery('<a/>', {
    id: 'foo',
    href: 'http://google.com',
    title: 'Become a Googler',
    rel: 'external',
    text: 'Go to Google!',
    target:'_blank',
    style:'display:none;'
}).appendTo('#mySelector');

$('#foo').click()

あなたはjsfiddleを提供できますか?
Xenology 2013

-2

これは、バッチファイルを呼び出すことができる場合に機能する可能性があります(私は、XP sp2およびIE8でphpを使用しています... IE7、dunnoを試すことができます)。.batファイルで次の(または同様の)ファイルを使用して、Windowsを開きます。「C:\ Progra〜1 \ Intern〜1 \ iexplore "http://www.site.com"を起動します。引用符とC:\ Progr ...などの間にスペースはありません。ある時点で、これは新しいタブではなく新しいウィンドウ(つまり、target = "_ blank")を開き始めますが、ある程度まで機能します。十分にテストされていません。これを通常のバッチファイル(CMD.exe)で使用するには、ウィンドウを既に開いている必要があります。偶然見つけたものを共有するだけです。明確化のために編集。


-7
<a href="http://www.google.com/" target="_self">New Tab Example</a>

IE7で動作します。

よろしく、

グレン


8
グレンこれは、OPが要求したものの反対です。_selfは、同じウィンドウまたはフレームでドキュメントを開きます。
travega 2011年

また、プログラムで開く方法でもありません。驚いたことに、この答えで+10担当者(+ 3 / -10)を獲得できます。
vusan 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.