JavaScript:location.hrefを新しいウィンドウ/タブで開きますか?


389

サードパーティの開発者からのJavaScriptファイルがあります。現在のページをターゲットに置き換えるhasリンクがあります。このページを新しいタブで開きたい。

これは私がこれまでに持っているものです:

if (command == 'lightbox') {
 location.href="https://support.wwf.org.uk/earth_hour/index.php?type=individual";
}

誰かが私を助けてくれますか?

回答:


932
window.open(
  'https://support.wwf.org.uk/earth_hour/index.php?type=individual',
  '_blank' // <- This is what makes it open in a new window.
);

102
注目に値する:新しいタブまたはウィンドウが作成されるかどうかは、ブラウザー(設定)によって決定されます。
jAndy

4
@alex私は重要なビットを読みやすくするためにこの回答を編集しました。私の書式設定を承認しない場合、2番目のパラメーターがスクロール解除領域内に収まるようにURLを短くすることをお勧めしますか?
Phrogz、2011

5
@ErickBest不正解です。"_blank"ウィンドウ/タブが新しい​​ことを保証します。(他の特別な名前以外の)何かがそのウィンドウに特定の名前を付けており、そのターゲットへの後続のリンクがウィンドウを再利用します。jsFiddle
アレックス2013

2
これは、最新のブラウザーでポップアップブロック通知をトリガーするだけで、_blankアンカークリックをまったくシミュレートしません。
Nathan Hornby 2014年

22
ブラウザによってポップアップが防止されました。
Jitendra Pancholi 2015年

24

location.hrefポップアップの問題を回避するために使用したい場合は、空の<a>参照を使用してから、JavaScriptを使用してそれをクリックできます。

HTMLのようなもの

<a id="anchorID" href="mynewurl" target="_blank"></a>

次にjavascriptはそれを次のようにクリックします

document.getElementById("anchorID").click();

13
私はこの解決策に期待していましたが、それでもポップアップブロックをトリガーするようです(少なくともChromeでは)。私はブラウザがそれがJavaScriptクリックであることを認識していて、別の扱いをしていると感じています。
Nathan Hornby 2014年

1
ネイサン、ありがとう。あなたはまったく正しいです。それでもポップアップブロックメッセージが表示されます。治ったと思った。理論的にはそれはうまくいくはずでした。アンドリュー
フィールド2015

2
$("#anchorID")[0].click(); このソリューションをjqueryで使用します。
theBell 2016

1
Lol theBell、DOM要素に直接アクセスしている場合はjQueryではありません[0]
Andre Figueiredo

7

で新しいウィンドウで開くことができますwindow.open('https://support.wwf.org.uk/earth_hour/index.php?type=individual');。新しいタブで開きたい場合は、現在のページを2つのタブで開き、スクリプトを実行して、現在のページと新しいページの両方を取得します。



0

例えば:

    $(document).on('click','span.external-link',function(){
        var t               = $(this), 
            URL             = t.attr('data-href');        
        $('<a href="'+ URL +'" target="_blank">External Link</a>')[0].click();

    });

作業


ブラウザによりポップアップが防止されました。
Millar248

1
これは、adblockまたはそれをブロックする何かがあることを意味します。デフォルトの動作は通常の条件下で機能しているはずです
Andrey Seregin

0

次のようなパラメーターを使用してアクションメソッドを呼び出す新しいタブを開くこともできます。

   var reportDate = $("#inputDateId").val();
   var url = '@Url.Action("PrintIndex", "Callers", new {dateRequested = "findme"})';
   window.open(window.location.href = url.replace('findme', reportDate), '_blank');

1行目と2行目は必要ですか?reportDateおよびurl変数なしで動作しませんか?
楽しい学習

パラメータ(reportDate)を取り出すこともできますが、アクションメソッドの呼び出しが含まれているため、URL変数は重要です。
Primoshenko
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.