Как открыть новую вкладку в JavaScript без перехода на новую вкладку?
Как я могу открыть новую вкладку с помощью JavaScript без перехода на новую вкладку?
Например, когда пользователь нажимает на ссылку, должна открываться новая вкладка, но пользователь должен оставаться на текущей вкладке.
9 ответов
Веб-браузер автоматически фокусируется на новой вкладке, но вы можете перезвонить:
function openWindow( url )
{
window.open(url, '_blank');
window.focus();
}
<a href="http://www.example.com/" onclick="javascript:openWindow(this.href);return false;">Click Me</a>
К сожалению, вы не можете сделать это в настоящее время - но вы можете подобраться ближе. Вы можете открыть новое окно, и если вы сделаете это без указания каких-либо размеров окна или элементов окна, большинство современных браузеров вместо этого откроют новую вкладку (в зависимости от предпочтений пользователя, но затем вы все равно захотите сделать то, что предпочитает пользователь, право?). Так просто window.open(url)
или же window.open(url, name)
если вы собираетесь использовать имя для чего-то. Обязательно сделайте это в прямом ответе на инициированное пользователем событие, иначе блокировщик всплывающих окон браузера, вероятно,... заблокирует всплывающее окно.:-)
Что касается сосредоточенности на вашем окне... удачи в этом. Ты можешь позвонить window.focus()
после window.open(...)
, но по моему опыту это обычно не работает.
Добавим это: если вы создаете объект, с которым пользователь взаимодействует, с подлинной ссылкой с URL-адресом, пользователь может решить, открывать ли его на новой вкладке, в новом окне и т. Д. И нужно ли ему сосредоточиться (если они достаточно сложный, чтобы знать Shift+Click и Ctrl+Shift+Click, или меню, вызываемое правой кнопкой мыши).
К сожалению, вы не можете сделать это во ВСЕХ браузерах, но вы можете сделать это в Chrome, если реализуете расширение браузера. Как манипулировать вкладками в Chrome с помощью JavaScript:
http://code.google.com/chrome/extensions/tabs.html
chrome.tabs.create(object createProperties, function callback)
Creates a new tab. Note: This function can be used without requesting the 'tabs' permission in the manifest.
Parameters
**createProperties** ( object )
**windowId** ( optional integer )
The window to create the new tab in. Defaults to the current window.
**index** ( optional integer )
The position the tab should take in the window. The provided value will be clamped to between zero and the number of tabs in the window.
**url** ( optional string )
The URL to navigate the tab to initially. Fully-qualified URLs must include a scheme (i.e. 'http://www.google.com', not 'www.google.com'). Relative URLs will be relative to the current page within the extension. Defaults to the New Tab Page.
**selected** ( optional boolean )
Whether the tab should become the selected tab in the window. Defaults to true
pinned ( optional boolean )
Whether the tab should be pinned. Defaults to false
**callback** ( optional function )
(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')))
Это пользовательские настройки, вы не можете изменить это поведение с JS.
Для меня, используя
window.open("https://stackru.com");
работал отлично. Что это делает, зависит от того, какой браузер вы используете, какая операционная система и ваши личные предпочтения.
Chrome, Internet Explorer и Firefox открыли новую вкладку. Извините, если это не работает для вас.
(Просто понял, что это старая ветка)
Сообщение старое, но без правильного ответа.
РЕШЕНИЕ ДЛЯ ВСЕХ БРАУЗЕРОВ:
Вы можете открыть новую вкладку для тех же доменных URL через:
window.open("newurl.php", "_blank");
и для междоменных новых вкладок вы должны создать простой локальный скрипт, например:
в новом файле "redirect.php" вы передаете параметр (целевой URL новой вкладки), как это
<?php
$newURL=$_GET['u'];
header('Location: '.$newURL);
؟>
и вы можете создать новую вкладку с любым целевым URL с помощью:
window.open("redirect.php?u=http://www.google.com", "_blank");
:)
это мое решение на моем сайте. и работать с любым
var isMobile = false;
if (
/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(
navigator.userAgent
) ||
/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(
navigator.userAgent.substr(0, 4)
)
) {
isMobile = true;
}
if (isMobile) {
window.location.assign(url);
} else {
window.open(url);
}
в маке:
Cmd+click
и в окнах:
ctrl+click
откроет новые вкладки в фоновом режиме. Возможно, это вопрос обучения пользователей, а не что-то, что нужно решать программно?