クロムでは、これは新しいタブで開きます:
<button onclick="window.open('newpage.html', '_blank')" />
これは新しいウィンドウで開きます(ただし、これも新しいタブで開くようにしたい:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
これは実現可能ですか?
クロムでは、これは新しいタブで開きます:
<button onclick="window.open('newpage.html', '_blank')" />
これは新しいウィンドウで開きます(ただし、これも新しいタブで開くようにしたい:
<script language="javascript">
window.open('newpage.html', '_blank');
</script>
これは実現可能ですか?
回答:
これはInternet Explorerユーザーが制御するオプションであるため、直接制御することはできません。
別のウィンドウ名でWindow.openを使用してページを開くと、ポップアップのような新しいブラウザーウィンドウで開くか、ユーザーがブラウザーを設定した場合は新しいタブで開きます。
編集:
より詳細な説明:
1。最新のブラウザでは、window.openはポップアップではなく新しいタブで開きます。
2。 3番目のパラメーターでオプションを指定することにより、ブラウザーに強制的に新しいウィンドウ(「ポップアップ」)を使用させることができます。
3. window.open呼び出しがユーザー開始イベントの一部ではなかった場合、新しいウィンドウで開きます。
4.「ユーザーが開始したイベント」は同じ関数呼び出しである必要はありませんが、ユーザーのクリックによって呼び出された関数で発生する必要があります
5。ユーザーが開始したイベントが関数呼び出しを委任または延期した場合(イベントリスナーまたはデリゲートがクリックイベントにバインドされていない場合、またはsetTimeoutを使用した場合など)、「ユーザー開始」としてのステータスを失います。
6。一部のポップアップブロッカーは、ユーザーが開始したイベントから開いたウィンドウを許可しますが、他の方法で開いたウィンドウは許可しません。
7。ポップアップがブロックされている場合、ブロッカーによって(ユーザーが開始したイベントを介して)通常許可されているポップアップもブロックされることがあります。いくつかの例…
新しいタブではなく、新しいブラウザインスタンスでウィンドウを強制的に開く:
window.open('page.php', '', 'width=1000');
次の例では、別の関数を呼び出していますが、ユーザーが開始したイベントとしての資格があります。
function o(){
window.open('page.php');
}
$('button').addEvent('click', o);
以下は、setTimeoutが遅延するため、ユーザーが開始したイベントとは見なされません。
function g(){
setTimeout(o, 1);
}
function o(){
window.open('page.php');
}
$('button').addEvent('click', g);
ユーザーが好みに応じて、タブを強制的に使用すると便利な場合があります。Prakashが上で述べたように、これはユーザーが開始しないイベントを使用することによって指示される場合がありますが、それを回避する方法があります。
例えば:
$("#theButton").button().click( function(event) {
$.post( url, data )
.always( function( response ) {
window.open( newurl + response, '_blank' );
} );
} );
「常に」機能はユーザーが開始したとは見なされないため、新しいブラウザウィンドウで常に「newurl」を開きます。ただし、これを行う場合:
$("#theButton").button().click( function(event) {
var newtab = window.open( '', '_blank' );
$.post( url, data )
.always( function( response ) {
newtab.location = newurl + response;
} );
} );
新しいブラウザウィンドウを開くか、新しいタブを作成します。これは、ユーザーが開始したボタンクリックのユーザー設定によって決まります。次に、AJAX投稿から戻った後、場所を目的のURLに設定します。ほら、ユーザーが気に入ったらタブを強制的に使用します。
あなたが使うなら window.open(url, '_blank')
、Chrome、Firefoxなどでブロックされます(ポップアップブロッカー)。
これを試して、
$('#myButton').click(function () {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
});
このhttp://jsfiddle.net/safeeronline/70kdacL4/2/の jsフィドル
ajaxウィンドウのjsフィドルの動作http://jsfiddle.net/safeeronline/70kdacL4/1/
現時点では(Chrome 39)このコードを使用して新しいタブを開きます。
window.open('http://www.stackoverflow.com', '_blank', 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes');
もちろん、これはChromeの将来のバージョンで変更される可能性があります。
ユーザーが使用しているブラウザを制御できない場合は、これを使用することはお勧めできません。将来のバージョンまたは異なる設定では機能しない可能性があります。
VM646 js:12 Blocked opening 'http://www.stackoverflow.com/' in a new window because the request was made in a sandboxed frame whose 'allow-popups' permission is not set.
これにより、リンクがChromeとFirefoxの新しいタブで開きます。テストしていないブラウザが増える可能性があります。
var popup = $window.open("about:blank", "_blank"); // the about:blank is to please Chrome, and _blank to please Firefox
popup.location = 'newpage.html';
基本的には、新しい空のタブを開き、その空のタブの場所を設定します。ブラウザーのタブ/ウィンドウの動作は、実際にはブラウザーとユーザーのドメイン、責任、および選択であるため、これは一種のハッキングであることに注意してください。
2行目はコールバックで呼び出すことができますが(たとえば、AJAXリクエストを実行した後)、ブラウザーはそれをユーザー開始のクリックイベントとして認識せず、ポップアップをブロックすることがあります。
$window
AngularJSでのの使用方法にすぎませんwindow
。window
代わりに単純に使用できます。詳細:docs.angularjs.org/api/ng/service/$window
明確なミニソリューション $('<form action="http://samedomainurl.com/" target="_blank"></form>').submit()
このコードを使用して、新しいタブで開くことができます。
function openWindow( url )
{
window.open(url, '_blank');
window.focus();
}
私はstackoverflowからそれを得た..