私は開こうとしています ポップアップウィンドウではなく、新しいタブでURLます。
回答が次のようになるような関連する質問を見てきました。
window.open(url,'_blank');
window.open(url);
しかし、どれも私にとってはうまくいきませんでした。ブラウザはまだポップアップウィンドウを開こうとしました。
私は開こうとしています ポップアップウィンドウではなく、新しいタブでURLます。
回答が次のようになるような関連する質問を見てきました。
window.open(url,'_blank');
window.open(url);
しかし、どれも私にとってはうまくいきませんでした。ブラウザはまだポップアップウィンドウを開こうとしました。
回答:
著者ができることは、新しいウィンドウではなく新しいタブで開くことを選択できます。それはユーザー設定ですです。(ほとんどのブラウザーのデフォルトのユーザー設定は新しいタブ用であるため、その設定が変更されていないブラウザーでの簡単なテストではこれが実証されないことに注意してください。)
CSS3はtarget-newを提案しましたが、仕様は放棄されました。
逆は真ではありません。の3番目の引数でウィンドウのサイズを指定することによりwindow.open()
、設定がタブの場合に新しいウィンドウをトリガーできます。
window.open
てブラウザに何か新しいものを開くように指示すると、ブラウザはその設定で選択されているものを開きます-タブまたはウィンドウ。テストしたブラウザで、タブではなく新しいウィンドウで開くように設定を変更すると、他のソリューションが間違っていることがわかります。
これはトリックです
function openInNewTab(url) {
var win = window.open(url, '_blank');
win.focus();
}
ほとんどの場合、onclick
ポップアップブロッカーとデフォルトの「新しいウィンドウ」の動作を防ぐために、リンクのハンドラーで直接これを行う必要があります。この方法で、またはDOM
オブジェクトにイベントリスナーを追加することで実行できます。
<div onclick="openInNewTab('www.test.com');">Something To Click On</div>
http://www.tutsplanet.com/open-url-new-tab-using-javascript/
window.open()
実際のクリックイベントで発生していない場合、新しいタブで開きません。与えられた例では、URLは実際のクリックイベントで開かれています。これは、ユーザーがブラウザで適切な設定をしている場合に機能します。
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open('www.yourdomain.com','_blank');
});
</script>
同様に、クリック関数内でAjax呼び出しを行おうとしていて、成功したときにウィンドウを開きたい場合は、async : false
オプションを設定してAjax呼び出しを行っていることを確認してください。
async: false
Chromeでは機能しません。コールバックから新しいウィンドウを開くには、HTTPリクエストを送信する前に空のウィンドウを開いてから、後で更新する必要があります。ここに良いハックがあります。
window.open
すべてのブラウザの新しいタブでポップアップを確実に開くことができないブラウザーの動作は window.open
、特にユーザーのブラウザー設定に関して、さまざまな方法で実装されます。window.open
ユーザーのブラウザー設定を処理する方法が異なるため、すべてのInternet Explorer、Firefox、およびChromeで同じ動作が当てはまるとは期待できません。
たとえば、Internet Explorer(11)のユーザーは新しいウィンドウまたは新しいタブでポップアップを開くことを選択できます。クエンティンの回答で示唆されているように、Internet Explorer 11のユーザーにを介して特定の方法でポップアップを開かせることはできません 。window.open
Firefox(29)ユーザーの場合、使用window.open(url, '_blank')
はブラウザーのタブ設定に依存しますが、幅と高さを指定することで、強制的に新しいウィンドウでポップアップを開くことができます(以下の「Chromeについて」セクションを参照)。
ブラウザの設定に移動し、新しいウィンドウでポップアップを開くように設定します。
上記の例のように、新しいウィンドウでポップアップを開くようにInternet Explorer(11)を設定したら、次のテストページを使用してテストしますwindow.open
。
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814');">
<code>window.open(url)</code>
</button>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', '_blank');">
<code>window.open(url, '_blank')</code>
</button>
</body>
</html>
ポップアップが新しいタブではなく、新しいウィンドウで開かれていることを確認します。
上記のスニペットをタブ設定を新しいウィンドウに設定してFirefox(29)でテストし、同じ結果を確認することもできます。
window.open
Internet Explorer(11)およびFirefox(29)とは異なる方法で実装されます。100%確信はありませんが、Chrome(バージョン34.0.1847.131 m
)には、ユーザーが新しいウィンドウまたは新しいタブ(FirefoxやInternet Explorerなど)でポップアップを開くかどうかを選択できる設定がないようです持ってる)。ポップアップの管理についてChromeのドキュメントを確認しましたが、そのようなことについては何も触れられていませんでした。
また、再び、異なるブラウザーは異なる動作を実装するようです window.open
。ChromeとFirefoxでは、幅と高さを指定すると、ユーザーが新しいタブで新しいウィンドウを開くようにFirefox(29)を設定した場合でも、ポップアップが強制されます(JavaScriptの回答で、タブではなく新しいウィンドウで開くように説明されています)。 :
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', 'test', 'width=400, height=400');">
<code>window.open(url)</code>
</button>
</body>
</html>
ただし、ユーザーがタブをブラウザー設定として設定した場合、上記の同じコードスニペットは常にInternet Explorer 11で新しいタブを開きます。幅と高さを指定しなくても、新しいウィンドウポップアップが強制されます。
したがって、window.open
Chrome の動作は、onclick
イベントで使用されたときにポップアップを新しいタブで開き、ブラウザコンソールから使用されたときに新しいウィンドウで開き(他の人が指摘しているように)、次のときに新しいウィンドウで開くようです。幅と高さで指定されます。
ブラウザーが window.open
異なれば、ユーザーのブラウザー設定に関する動作も異なります。window.open
ユーザーのブラウザー設定を処理する方法が異なるため、すべてのInternet Explorer、Firefox、およびChromeで同じ動作が当てはまるとは期待できません。
一発ギャグ:
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
それは仮想a
要素を作成し、それをtarget="_blank"
新しいタブで開くように指定し、適切に指定url
href
してからクリックします。
そして、必要に応じて、それに基づいていくつかの関数を作成できます。
function openInNewTab(href) {
Object.assign(document.createElement('a'), {
target: '_blank',
href,
}).click();
}
そして、あなたはそれを次のように使うことができます:
openInNewTab("https://google.com");
重要な注意点:
openInNewTab
(およびこのページの他のソリューションと同様に)ユーザーアクションコールバック中に呼び出す必要があります。クリックイベント内(コールバック関数では直接必要ありませんが、クリックアクション中)。
ランダムな瞬間に手動で呼び出す場合(例:インターバル内またはサーバーの応答後)-ブラウザーによってブロックされる可能性があります(これは、セキュリティリスクとなり、ユーザーエクスペリエンスが非常に低下する可能性があるため、理にかなっています) )
$('<a />',{'href': url, 'target', '_blank'}).get(0).click();
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
を使用するとwindow.open(url, '_blank')
、Chromeでブロックされます(ポップアップブロッカー)。
これを試して:
//With JQuery
$('#myButton').click(function () {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
});
純粋なJavaScriptでは、
document.querySelector('#myButton').onclick = function() {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
};
the request was made in a sandboxed frame whose 'allow-popups' permission is not set
スティーブン・スピルバーグの答えを詳しく説明するために、私はそのような場合にこれを行いました:
$('a').click(function() {
$(this).attr('target', '_blank');
});
このように、ブラウザがリンクをたどる直前にtarget属性を設定しているため、リンクが新しいタブまたはウィンドウで開かれます(ユーザーの設定によって異なります)。
jQueryの1行の例:
$('a').attr('target', '_blank').get(0).click();
// The `.get(0)` must be there to return the actual DOM element.
// Doing `.click()` on the jQuery object for it did not work.
これは、ネイティブブラウザのDOM APIを使用するだけでも実現できます。
document.querySelector('a').setAttribute('target', '_blank');
document.querySelector('a').click();
私は以下を使用し、それは非常にうまくいきます!
window.open(url, '_blank').focus();
あなたはこれを制御できないと思います。ユーザーがリンクを新しいウィンドウで開くようにブラウザを設定した場合、リンクを新しいタブで開くように強制することはできません。
興味深い事実は、アクションがユーザーによって呼び出されない場合(ボタンをクリックするなど)、または非同期の場合、新しいタブを開くことができないことです。たとえば、これは新しいタブで開かれません。
$.ajax({
url: "url",
type: "POST",
success: function() {
window.open('url', '_blank');
}
});
ただし、ブラウザの設定によっては、新しいタブで開く場合があります。
$.ajax({
url: "url",
type: "POST",
async: false,
success: function() {
window.open('url', '_blank');
}
});
<script>open('http://google.com')</script>
して.html
、最新バージョンのFirefoxの新規インストールで開きます。新しいウィンドウではなく、Firefoxが喜んでGoogleを新しいタブ(おそらく、ポップアップを許可するように指示した後)で開きます。
(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')))
あなたはトリックを使うことができますform
:
$(function () {
$('#btn').click(function () {
openNewTab("http://stackoverflow.com")
return false;
});
});
function openNewTab(link) {
var frm = $('<form method="get" action="' + link + '" target="_blank"></form>')
$("body").append(frm);
frm.submit().remove();
}
name
キーおよびvalue
値として、フォーム要素内に非表示の入力要素を埋め込むことです。その後、フォームを送信します
カスタム関数から新しいタブを開こうとしている場合、これはブラウザ設定とは関係ありません。
このページで、JavaScriptコンソールを開き、次のように入力します。
document.getElementById("nav-questions").setAttribute("target", "_blank");
document.getElementById("nav-questions").click();
また、「クリック」はカスタムアクションから発生するため、設定に関係なくポップアップを開こうとします。
リンク上の実際の「マウスクリック」のように動作するためには、あなたはに従う必要がありspirinvladimirの助言@と本当にそれを作成します。
document.getElementById("nav-questions").setAttribute("target", "_blank");
document.getElementById("nav-questions").dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
false, false, false, false, 0, null);
return e
}(document.createEvent('MouseEvents'))));
以下に完全な例を示します(jsFiddleまたは同様のオンラインエディターでは試さないでください。外部のページにリダイレクトできないためです)。
<!DOCTYPE html>
<html>
<head>
<style>
#firing_div {
margin-top: 15px;
width: 250px;
border: 1px solid blue;
text-align: center;
}
</style>
</head>
<body>
<a id="my_link" href="http://www.google.com"> Go to Google </a>
<div id="firing_div"> Click me to trigger custom click </div>
</body>
<script>
function fire_custom_click() {
alert("firing click!");
document.getElementById("my_link").dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, /* type, canBubble, cancelable, view */
0, 0, 0, 0, 0, /* detail, screenX, screenY, clientX, clientY */
false, false, false, false, /* ctrlKey, altKey, shiftKey, metaKey */
0, null); /* button, relatedTarget */
return e
}(document.createEvent('MouseEvents'))));
}
document.getElementById("firing_div").onclick = fire_custom_click;
</script>
</html>
w = window.open("placeholder"); $.ajax(...ajax call that returns the url...) success (...w.location = data.url...)
、theandystratton.com
または、リンク要素を作成してクリックすることもできます...
var evLink = document.createElement('a');
evLink.href = 'http://' + strUrl;
evLink.target = '_blank';
document.body.appendChild(evLink);
evLink.click();
// Now delete it
evLink.parentNode.removeChild(evLink);
これはポップアップブロッカーによってブロックされるべきではありません...うまくいけば。
私は簡単な回避策を見つけました:
ステップ1:非表示のリンクを作成します。
<a id="yourId" href="yourlink.html" target="_blank" style="display: none;"></a>
ステップ2:プログラムでそのリンクをクリックします。
document.getElementById("yourId").click();
どうぞ!私にとって魅力的な作品です。
新しいタブを開いて同じタブにとどまる方法について多くの情報を調査しました。私はそれを行うための小さなトリックを1つ見つけました。開く必要があるURL- newUrlと古いURL- currentUrlがあるとしましょう。これらは新しいタブが開いた後もそのままにする必要があります。JSコードは次のようになります。
// init urls
let newUrl = 'http://example.com';
let currentUrl = window.location.href;
// open window with url of current page, you will be automatically moved
// by browser to a new opened tab. It will look like your page is reloaded
// and you will stay on same page but with new page opened
window.open(currentUrl , '_blank');
// on your current tab will be opened new url
location.href = newUrl;
どのように作成する方法について<a>
と_blank
とtarget
属性値とurl
などhref
スタイルのディスプレイで、:AA子供要素で隠されましたか?次に、DOMに追加して、子要素でクリックイベントをトリガーします。
それはうまくいきません。ブラウザはデフォルトの動作を妨げます。プログラムでトリガーすることもできますが、デフォルトの動作には従いません。
自分で確認してください:http : //jsfiddle.net/4S4ET/
Firefox(Mozilla)拡張機能から新しいタブを開くと、次のようになります。
gBrowser.selectedTab = gBrowser.addTab("http://example.com");
これは私にとってはうまくいき、イベントを防止し、URLを追加してから、<a>
tag
その上でクリックイベントをトリガーしますtag
。
Js
$('.myBtn').on('click', function(event) {
event.preventDefault();
$(this).attr('href',"http://someurl.com");
$(this).trigger('click');
});
HTML
<a href="#" class="myBtn" target="_blank">Go</a>
window.open(url)
新しいブラウザタブでURLを開きます。それより下のJS代替
let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click(); // we don't need to remove 'a' from DOM because we not add it
ここに作業例があります(stackoverflowスニペットでは新しいタブを開くことができません)
URLを新しいタブで開くか新しいウィンドウで開くかは、実際にはユーザーのブラウザー設定によって制御されます。JavaScriptでオーバーライドする方法はありません。
window.open()
使用方法によって動作が異なります。ユーザーアクションの直接の結果として呼び出された場合、ボタンのクリックとしましょう。これは正常に機能し、新しいタブ(またはウィンドウ)を開きます。
const button = document.querySelector('#openTab');
// add click event listener
button.addEventListener('click', () => {
// open a new tab
const tab = window.open('https://attacomsian.com', '_blank');
});
ただし、AJAXリクエストコールバックから新しいタブを開こうとした場合、直接のユーザーアクションであるため、ブラウザはそのをブロックします。
ポップアップブロッカーをバイパスし、コールバックから新しいタブを開くには、次の小さなハックがあります。
const button = document.querySelector('#openTab');
// add click event listener
button.addEventListener('click', () => {
// open an empty window
const tab = window.open('about:blank');
// make an API call
fetch('/api/validate')
.then(res => res.json())
.then(json => {
// TODO: do something with JSON response
// update the actual URL
tab.location = 'https://attacomsian.com';
tab.focus();
})
.catch(err => {
// close the empty window
tab.close();
});
});
私はこの方法を試しました、そしてそれはうまくいくようです
window.open('example.com', 'newWin');
私はここで多くの実用的な例を見つけました:
http://www.gtalbot.org/FirefoxSection/Popup/PopupAndFirefox.html#TestPopupControl
私は、次のように書いた人と多少同意します(言い換えると、「既存のWebページのリンクの場合、新しいページが同じWebサイトの一部である場合、ブラウザは常に新しいタブでリンクを開きます。既存のウェブページ。」少なくとも私にとっては、この「一般的なルール」はChrome、Firefox、Opera、IE、Safari、SeaMonkey、Konquerorで機能します。
とにかく、他の人が提示したものを利用するためのそれほど複雑でない方法があります。ブラウザーの動作を制御したい独自のWebサイト(以下の「thissite.com」)について話していると仮定すると、以下では、「specialpage.htm」を空にして、HTMLをまったく使用しないようにします(サーバーからデータを送信する時間を節約できます!)
var wnd, URL; //global variables
//specifying "_blank" in window.open() is SUPPOSED to keep the new page from replacing the existing page
wnd = window.open("http://www.thissite.com/specialpage.htm", "_blank"); //get reference to just-opened page
//if the "general rule" above is true, a new tab should have been opened.
URL = "http://www.someothersite.com/desiredpage.htm"; //ultimate destination
setTimeout(gotoURL(),200); //wait 1/5 of a second; give browser time to create tab/window for empty page
function gotoURL()
{ wnd.open(URL, "_self"); //replace the blank page, in the tab, with the desired page
wnd.focus(); //when browser not set to automatically show newly-opened page, this MAY work
}
外部リンク(他のサイトに移動するリンク)のみを開きたい場合は、次のJavaScript / jQueryが適切に機能します。
$(function(){
var hostname = window.location.hostname.replace('www.', '');
$('a').each(function(){
var link_host = $(this).attr('hostname').replace('www.', '');
if (link_host !== hostname) {
$(this).attr('target', '_blank');
}
});
});
リンクが同じドメイン上(同じWebサイト上)にある場合、ブラウザーは常に新しいタブでリンクを開きます。リンクが他のドメインにある場合は、ブラウザーの設定に応じて、新しいタブ/ウィンドウでリンクが開きます。
したがって、これによれば、以下を使用できます。
<a class="my-link" href="http://www.mywebsite.com" rel="http://www.otherwebsite.com">new tab</a>
そして、いくつかのjQueryコードを追加します。
jQuery(document).ready(function () {
jQuery(".my-link").on("click",function(){
var w = window.open('http://www.mywebsite.com','_blank');
w.focus();
w.location.href = jQuery(this).attr('rel');
return false;
});
});
したがって、最初に同じウェブサイトで_blankターゲットを使用して新しいウィンドウを開き(新しいタブで開きます)、次にその新しいウィンドウ内で目的のウェブサイトを開きます。