javascriptを使用して、別のタブで新しいページを開きたいのですが、現在のタブに焦点を合わせたままにします。私はこのようにそれを行うことができることを知っています:
open('http://example.com/');
focus();
ただし、これをChromeで実行すると、現在のタブに戻る前に、新しいタブが一瞬点滅します。これは避けたい。
このアプリケーションは個人用のブックマークレットであるため、最新のChromeでのみ機能する必要があります。
javascriptを使用して、別のタブで新しいページを開きたいのですが、現在のタブに焦点を合わせたままにします。私はこのようにそれを行うことができることを知っています:
open('http://example.com/');
focus();
ただし、これをChromeで実行すると、現在のタブに戻る前に、新しいタブが一瞬点滅します。これは避けたい。
このアプリケーションは個人用のブックマークレットであるため、最新のChromeでのみ機能する必要があります。
更新:Google Chromeのバージョン41までにinitMouseEvent
、動作が変更されたように見えたため、この回答は機能しなくなりました。コメントを寄せてくれた@DanielAnderssonに感謝します。
これは、属性が目的に設定された動的に生成された要素でctrl
+ click
(または背景タブを開く他のキー/イベントの組み合わせ)をシミュレートすることで実行できます。a
href
url
動作中: フィドル
function openNewBackgroundTab(){
var a = document.createElement("a");
a.href = "http://www.google.com/";
var evt = document.createEvent("MouseEvents");
//the tenth parameter of initMouseEvent sets ctrl key
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
true, false, false, false, 0, null);
a.dispatchEvent(evt);
}
クロムでのみテスト済み
この質問のTHX!すべての人気のあるブラウザで私に適しています:
function openNewBackgroundTab(){
var a = document.createElement("a");
a.href = window.location.pathname;
var evt = document.createEvent("MouseEvents");
//the tenth parameter of initMouseEvent sets ctrl key
evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
true, false, false, false, 0, null);
a.dispatchEvent(evt);
}
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(!is_chrome)
{
var url = window.location.pathname;
var win = window.open(url, '_blank');
} else {
openNewBackgroundTab();
}
私が覚えている限り、これはブラウザの設定によって制御されます。つまり、ユーザーは、新しいタブをバックグラウンドで開くかフォアグラウンドで開くかを選択できます。また、新しいポップアップを新しいタブで開くか、単に...ポップアップで開くかを選択できます。
たとえば、Firefoxの設定では:
最後のオプションに注意してください。
私はあなたが探していることを非常に簡単な方法で正確に行いました。Google ChromeとOperaでは完全にスムーズで、FirefoxとSafariではほぼ完璧です。IEではテストされていません。
function newTab(url)
{
var tab=window.open("");
tab.document.write("<!DOCTYPE html><html>"+document.getElementsByTagName("html")[0].innerHTML+"</html>");
tab.document.close();
window.location.href=url;
}
フィドル: http: //jsfiddle.net/tFCnA/show/
説明:
ウィンドウA1とB1、およびWebサイトA2とB2があるとします。
B1でB2を開いてからA1に戻る代わりに、A1でB2を開き、B1でA2を再度開きます。
(それを機能させるもう1つのことは、ユーザーにA2を再ダウンロードさせないことです。4行目を参照してください)
気に入らないかもしれない唯一のことは、メインページの前に新しいタブが開くことです。
これは、フォーカスされた新しいタブで有効なURLをナビゲートするための完全な例です。
HTML:
<div class="panel">
<p>
Enter Url:
<input type="text" id="txturl" name="txturl" size="30" class="weburl" />
<input type="button" id="btnopen" value="Open Url in New Tab" onclick="openURL();"/>
</p>
</div>
CSS:
.panel{
font-size:14px;
}
.panel input{
border:1px solid #333;
}
JAVASCRIPT:
function isValidURL(url) {
var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
if (RegExp.test(url)) {
return true;
} else {
return false;
}
}
function openURL() {
var url = document.getElementById("txturl").value.trim();
if (isValidURL(url)) {
var myWindow = window.open(url, '_blank');
myWindow.focus();
document.getElementById("txturl").value = '';
} else {
alert("Please enter valid URL..!");
return false;
}
}
また、 http://codebins.com/codes/home/4ldqpbwでソリューションを使用してビンを作成しました