同じウィンドウと同じタブでURLを開く


361

同じウィンドウとリンクのあるページを含む同じタブでリンクを開きたいのですが。

を使用してリンクを開こうとするwindow.openと、同じウィンドウの同じタブではなく、新しいタブで開きます。

回答:


600

name属性を使用する必要があります。

window.open("https://www.youraddress.com","_self")

編集:URLの前にプロトコルを追加する必要があります。それなしでは相対URLを開こうとします。Chrome 59、Firefox 54、IE 11でテスト済み。


2
2番目の引数はtarget=、tag の属性のように、新しいウィンドウの単なる名前aです。実際、ウィンドウには好きな名前を付けることができます。同じウィンドウまたはタブで開かないように、必要なものはすべて異なる値を設定することです。
ijse

12
@ijs​​e実際には、いくつかの特別な名前があります。そのうちの1つは、コードが実行されているwin / tabを指す「_self」です。;)
vdbuilder

5
「_self」は、window.open()のMDN [ developer.mozilla.org/en-US/docs/Web/API/Window/open]ドキュメントで指定されていません。よりクロスブラウザのソリューションは、location.replace()を使用することです。
ブライアンレイナー

1
上記のコメントのMDNリンクは404への自動リンクです。リンクはdeveloper.mozilla.org/en-US/docs/Web/API/Window/open
Groovecoder

_self記載されている5.1.6ブラウジング・コンテキスト名2014年10月HTML5 W3C勧告28時:w3.org/TR/html/browsers.html#browsing-context-names(しかしwindow.locationまだクリーナーです)。
Dem Pilafian、2015年


62

リンクが同じタブで開かれていることを確認するには、次を使用する必要があります window.location.replace()

以下の例をご覧ください。

window.location.replace("http://www.w3schools.com");

ソース:http : //www.w3schools.com/jsref/met_loc_replace.asp


3
閲覧履歴は保存されませんので、使用しないでください。代わりにwindow.open( " google.com"、 "_ top")参照リンクgeeksforgeeks.org/…を試してください
shyam_

2
この私には良いですが、おかげで男
アンジェラスロマン

28

URLを指定せずに同じページに移動することができます。

window.open('?','_self');

それは同じページではありません。既存のURLからクエリ文字列を削除します。
クエンティン

20

「フレーム」内にページがある場合、「Window.open( 'logout.aspx'、 '_ self')」

同じフレーム内でリダイレクトされます。したがって、

"Window.open('logout.aspx','_top')"

新しいリクエストとしてページをロードできます。


11

最も顕著なjavascript機能の1つは、オンクリックハンドラーをオンザフライで起動することです。次のメカニズムはlocation.href=''or location.reload()またはor を使用するよりも信頼できることがわかりましたwindow.open

// this function can fire onclick handler for any DOM-Element
function fireClickEvent(element) {
    var evt = new window.MouseEvent('click', {
        view: window,
        bubbles: true,
        cancelable: true
    });

    element.dispatchEvent(evt);
}

// this function will setup a virtual anchor element
// and fire click handler to open new URL in the same room
// it works better than location.href=something or location.reload()
function openNewURLInTheSameWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;
    fireClickEvent(a);
}

上記のコードは、新しいタブ/ウィンドウを開いてすべてのポップアップブロッカーをバイパスするのにも役立ちます!!! 例えば

function openNewTabOrNewWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;

    a.target = '_blank'; // now it will open new tab/window and bypass any popup blocker!

    fireClickEvent(a);
}

10

リンクのクリックのような別のURLを開く

window.location.href = "http://example.com";


5

window.open(url, wndname, params)、3つの引数があります。同じウィンドウで開きたくない場合は、別のwndnameを設定してください。といった :

window.open(url1, "name1", params); // this open one window or tab
window.open(url1, "name2", params); // though url is same, but it'll open in another window(tab).

の詳細は次のとおりwindow.open()です。信頼できます。
https://developer.mozilla.org/en/DOM/window.open

やってみて~~


7
問題は、同じウィンドウ同じタブで開きたいということです。
SNag 2013年

2

HTML 5では、履歴APIを使用できます

history.pushState({
  prevUrl: window.location.href

}, 'Next page', 'http://localhost/x/next_page');
history.go();

次に、次のページでそのように状態オブジェクトにアクセスできます

let url = history.state.prevUrl;
if (url) {
  console.log('user come from: '+ url)
}

1

それはかなり簡単です。最初のウィンドウを開くwindow.open(url, <tabNmae>)

例: window.open("abc.com",'myTab')

そして次のすべてのwindow.openのために、使用同じタブ名の代わりに_self_parentなどを


1

まさにこのように window.open("www.youraddress.com","_self")


1
   Just Try in button.

   <button onclick="location.reload();location.href='url_name'" 
   id="myButton" class="btn request-callback" >Explore More</button>

   Using href 

  <a href="#" class="know_how" onclick="location.reload();location.href='url_name'">Know More</a> 

現在のページのリロードをトリガーし、次のステートメントで新しいページをロードしてキャンセルすることはまったく意味がありません。
Quentin

-3

MDNのリファレンスが言うように、新しいwindow/の名前を指定するだけですtab

https://developer.mozilla.org/en-US/docs/Web/API/Window/open#Syntax

を使用して現在のタブページで開く _self

<a
 href="url"
 target="_self">
   open
</a>
const autoOpenAlink = (url = ``) => {
  window.open(url, "open testing page in the same tab page");
}

を使用して新しいタブページで開く _blank

Vueデモ

    <div style="margin: 5px;">
        <a
            :href="url"
            @click="autoOpenAlink"
            target="_blank"
            >
            {{url}}
        </a>
    </div>

ヴュー

    autoOpenAlink(e) {
        e.preventDefault();
        let url = this.url;
        window.open(url, "iframe testing page");
    },

現在のウィンドウの名前を確実に知ることはできません。この2011年の回答のアドバイスに従い、特別な_self名を使用することをお勧めします。
Quentin

あなたの最初の例はただ間違っています。_blankは、明示的に、名前のない新しいウィンドウまたはタブです。
Quentin

どういたしまして!_selfを設定すると、現在のページで開くので、私にとっては不都合です。新しいページが1つだけ必要です。
xgqfrms

問題はあなたが何必要としているのかではありません!あなたが必要なものについての質問に答えたい場合は、それを尋ねる質問を見つけてください。
Quentin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.