web-dev-qa-db-ja.com

タブではなく、新しいウィンドウでJavaScriptが開く

項目が選択されたときにwindow.open(url)を呼び出すセレクトボックスがあります。 Firefoxはデフォルトで新しいタブでページを開きます。ただし、新しいタブではなく、新しいウィンドウでページを開くようにします。

どうすればこれを達成できますか?

349
adam

ウィンドウにwidth/heightの 'specs'パラメータを付けます。すべての可能なオプションについては ここ を参照してください。

window.open(url, windowName, "height=200,width=200");

幅/高さを指定すると、タブではなく新しいウィンドウで開きます。

437
DNS

高さを使用する必要はありません。_blankを使用していることを確認してください。それがないと、新しいタブが開きます。

空のウィンドウの場合

window.open('', '_blank', 'toolbar=0,location=0,menubar=0');

特定のURLの場合:

window.open('http://www.google.com', '_blank', 'toolbar=0,location=0,menubar=0');
103
nwbrad

私は間違っているかもしれませんが、私が理解していることから、これはユーザーのブラウザ設定によって制御されており、これをオーバーライドできるとは思いません。

81
Jordan S. Jones

試してください:

window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");

私はあなたの言うことをするコードをいくつか持っていますが、そこにはたくさんのパラメータがあります。私はこれらが最低限だと思います、それがうまくいかないかどうか私に知らせてください、私は残りを掲示するつもりです。

15
theman_on_vista

あなたは次の機能を試すことができます:

<script type="text/javascript">
function open(url)
{
  var popup = window.open(url, "_blank", "width=200, height=200") ;
  popup.location = URL;
}
</script>

実行用のHTMLコード:

<a href="#" onclick="open('http://www.google.com')">google search</a>
10
jgray

あなたはする必要はないはずです。ユーザーが好みの設定をすべて行えるようにします。

新しいウィンドウでページを開くのは面倒なので、Firefoxはデフォルトでこれを行います。それがユーザーの望むことではない場合、ページを開くことは許可されません。 (Firefoxでは、そのように設定した場合、新しいウィンドウでタブを開くことができます)。

9
CookieOfFortune

OK、たくさんのテストをした後、ここで私の結論は:

あなたが実行するとき:

     window.open('www.yourdomain.tld','_blank');
     window.open('www.yourdomain.tld','myWindow');

またはあなたがdestinationフィールドに入れたものは何でも、これは何も変わらないでしょう:新しいページは新しいタブで開かれるでしょう(ユーザの好みに依存します)

ページを新しい「実際の」ウィンドウで開くには、追加のパラメータを指定する必要があります。好きです:

window.open('www.yourdomain.tld', 'mywindow','location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1');

テストの後、それはあなたが使用する余分なパラメータのようです、本当に重要ではありません:これはあなたが新しい "本当のウィンドウ"を作成する "this parameter"や "this other one"を置くという事実ではありません).

しかし、何かが混乱しており、間違った答えをたくさん説明しているかもしれません。

この:

 win1 = window.open('myurl1', 'ID_WIN');
 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');

この:

 win2 = window.open('myurl2', 'ID_WIN', 'location=1,status=1,scrollbars=1');
 win1 = window.open('myurl1', 'ID_WIN');

同じ結果は得られません。

最初のケースでは、最初に - 追加パラメータなしでページを開くと、新しい tab で開きます。そしてこの場合、あなたが与える名前のために2番目の呼び出しもこの tab で開かれるでしょう。

2番目のケースでは、あなたの最初の呼び出しが - extraパラメータで されているので、ページは新しい "/ - real window "で開かれます。そしてその場合、たとえ2番目の呼び出しが追加のパラメータなしで行われたとしても、それはこの新しい " real window " ...でも同じタブで開かれるでしょう!

これは最初の呼び出しがページをどこに置くかを決定したので重要であることを意味します。

7
Peter

興味深いことに、window.openの3番目の属性に empty という文字列(null文字列やプロパティのリストとは対照的に)を渡すと、Chrome、Firefoxの新しいタブで開くことがわかりました。 、そしてIE。存在しない場合、動作は異なりました。

だから、これは私の新しい呼び出しです:

 window.open(url, windowName, '');
5
Tom Lianza

重要なのはパラメータです。

Parameters [Height = ""、Width = ""]を指定すると、新しいウィンドウで開きます。

Parametersを指定しないと、新しいタブで開きます。

ChromeとFirefoxでテスト済み

5
MuniR

その方法を試してみてください.....

function popitup(url) {
       //alert(url);
       newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
       newwindow.moveTo(350,150);
   if (window.focus) 
          {
             newwindow.focus()
          }
   return false;
  }
4
Zeeshan Akhter

私はこれをIE(11)とChrome(54.0.2794.1 canary SyzyASan)で試したばかりです。

window.open(url, "_blank", "x=y")

...そしてそれは新しいウィンドウで開きました。

つまり、 Clint pachl は、1つのパラメータを指定すると新しいウィンドウが開くと言っています。

- そして明らかにそれは正当なパラメータである必要はありません!

(YMMV - 私が言ったように、私は2か所だけでそれをテストしました...そして次のアップグレードはどういうわけか結果を無効にするかもしれません)

ETA:私が気付いたのは、IEの場合、ウィンドウには飾りがないということです。

2
theGleep

私はそれがHTMLのターゲットプロパティの問題ではないと思うが、あなたは "Firefoxの"オプション "メニューの下の"タブ "タブで"新しいタブで代わりに新しいウィンドウで開く "オプションのチェックを外した。確認してもう一度やり直してください。

enter image description here

1
shihab mm

私にとっての解決策は

"location=0"

第3パラメータで。最新のFF/Chromeと古いバージョンのIE11でテスト済み

私が使用するフルメソッドコールは以下の通りです(可変幅を使用したいので)。

window.open(url, "window" + id, 'toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width=' + width + ',height=800,left=100,top=50');
0
DAustin

私はこれと同じ質問をしましたが、それに対する比較的単純な解決策を見つけました。

JavaScriptでは、ウィンドウがポップアップであるかどうかを判断するためにwindow.opener !=null;をチェックしていました。あなたのサイトがレンダリングされているウィンドウがポップアップであるかどうかを判断するために似たような検出コードを使っているなら、あなたは簡単にできます "off" あなたが開きたいとき "new" 新しいウィンドウのJavaScriptを使用したウィンドウ。

これをあなたのページの一番上に置くだけで、常に "new" ウィンドウになります。

<script type="text/javascript">
    window.opener=null;
</script>

私は自分のサイトのログインページでこれを使っているので、自分のサイトにナビゲートするためにポップアップウィンドウを使ってもポップアップの動作はしません。

これを実行してから指定したURLに移動する簡単なリダイレクトページを作成することもできます。何かのようなもの、

親ページのJavaScript:

window.open("MyRedirect.html?URL="+URL, "_blank");

そして、 here から小さなJavaScriptを使用することで、URLを取得してそれにリダイレクトすることができます。

リダイレクトページのJavaScript:

 <script type="text/javascript">
        window.opener=null;

    function getSearchParameters() {
          var prmstr = window.location.search.substr(1);
          return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
    }

    function transformToAssocArray( prmstr ) {
        var params = {};
        var prmarr = prmstr.split("&");
        for ( var i = 0; i < prmarr.length; i++) {
            var tmparr = prmarr[i].split("=");
            params[tmparr[0]] = tmparr[1];
        }
        return params;
    }

    var params = getSearchParameters();
    window.location = params.URL;
    </script>
0
Dan

答えました ここ 。しかし、参考のために再度投稿してください。

実際のクリックイベントで発生していない場合、window.open()は新しいタブで開きません。与えられた例では、URLは実際のクリックイベントで開かれています。ユーザがブラウザで適切な設定をしていれば、これは機能します。

<a class="link">Link</a>
<script  type="text/javascript">
     $("a.link").on("click",function(){
         window.open('www.yourdomain.com','_blank');
     });
</script>

同様に、click関数内でajax呼び出しを実行しようとしていて、成功時にウィンドウを開きたい場合は、async : falseオプションを設定してajax呼び出しを実行していることを確認してください。

0
Venkat Kotra