我想使用javascript在其他标签中打开新页面,但仍将重点放在当前标签上。我知道我可以这样做:
open('http://example.com/');
focus();
但是,当我在chrome中执行此操作时,它会闪烁新标签一会儿,然后再切换回当前标签。我想避免这种情况。
该应用程序是个人书签,因此仅需在最新的Chrome中运行。
我想使用javascript在其他标签中打开新页面,但仍将重点放在当前标签上。我知道我可以这样做:
open('http://example.com/');
focus();
但是,当我在chrome中执行此操作时,它会闪烁新标签一会儿,然后再切换回当前标签。我想避免这种情况。
该应用程序是个人书签,因此仅需在最新的Chrome中运行。
Answers:
更新:谷歌浏览器的版本41, initMouseEvent
似乎已更改的行为。
这可以通过在属性属性设置为所需的动态生成的元素上模拟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);
}
仅在铬上测试
a.target='_blank';
。
MouseEvent('click', {view: window, ctrlKey: true, metaKey: true});
,新打开的选项卡仍会占据焦点。我想念什么吗?
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();
}
我以一种非常简单的方式完全满足了您的需求。在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以及网站A2和B2。
我没有在B1中打开B2然后返回A1,而是在A1中打开B2,然后在B1中重新打开A2。
(使它起作用的另一件事是,我没有让用户重新下载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上使用解决方案创建了一个bin