как я могу открыть новую вкладку в chrome и firefox, не делая последнюю вкладку активной, т. е. держать пользователей на вкладке, в которой он был раньше, и открывает новую вкладку [дубликат]

Я думал, что я бы поставил это здесь, поскольку он, похоже, является популярной точкой посадки для тех, кто начинает использовать API Карт Google. Несколько маркеров, отображаемых на стороне клиента, вероятно, являются падением многих характеристик приложений сопоставления. Трудно тестировать, исправлять и в некоторых случаях даже устанавливать проблему (из-за различий в реализации браузера, оборудования, доступного клиенту, мобильных устройств, список продолжается).

Самый простой способ начать эту проблему - использовать решение кластеризации маркеров. Основная идея состоит в том, чтобы группировать географически похожие местоположения в группу с количеством отображаемых точек. По мере того, как пользователь приближается к карте, эти группы расширяются, чтобы показывать отдельные маркеры внизу.

Возможно, проще всего реализовать библиотеку markerclusterer . Основная реализация будет следующей (после импорта библиотеки):


Маркеры вместо добавления непосредственно к карте добавляются в массив. Затем этот массив передается в библиотеку, которая обрабатывает сложные вычисления для вас и прикрепляется к карте.

Не только эти реализации значительно увеличивают производительность на стороне клиента, но также во многих случаях приводят к более простому и менее загроможденному пользовательскому интерфейсу и более простому перевариванию данных в больших масштабах.

Другие версии доступны в Google.

Надеюсь, что это поможет некоторым из тех, кто новее к нюансам картографии.

59
задан st-boost 30 May 2012 в 09:28
поделиться

6 ответов

ОБНОВЛЕНИЕ: по версии 41 Google Chrome 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);
}

проверен только на хроме

92
ответ дан Amro 26 August 2018 в 09:35
поделиться

Насколько я помню, это контролируется настройками браузера. Другими словами: пользователь может выбрать, хотите ли они открывать новую вкладку в фоновом или переднем плане. Также они могут выбрать, должно ли новое всплывающее окно открываться на новой вкладке или просто ... всплывать.

Например, в настройках firefox:

Firefox setup example [/g0]

Обратите внимание на последнюю опцию.

1
ответ дан demee 26 August 2018 в 09:35
поделиться

Вот полный пример для навигации по допустимому URL-адресу на новой вкладке с фокусировкой.

HTML:

<div class="panel">
  <p>
    Enter Url: 
    <input type="text" id="txturl" name="txturl" size="30" class="weburl" />
    &nbsp;&nbsp;    
    <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;
    }
}

Я также создал bin с решением на http://codebins.com/codes/home/4ldqpbw

-3
ответ дан gaurang171 26 August 2018 в 09:35
поделиться

Я сделал именно то, что вы ищете очень простым способом. Он отлично работает в 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;
}

Fiddle: http://jsfiddle.net/tFCnA/show/

Объяснения: Скажем, есть окна A1 и B1 и сайты A2 и B2. Вместо того, чтобы открывать B2 в B1, а затем возвращаться к A1, я открываю B2 в A1 и снова открываю A2 в B1. (Еще одна вещь, которая заставляет его работать, заключается в том, что я не заставляю пользователя повторно загружать A2, см. Строку 4)


Единственное, что вы не можете не похоже, что новая вкладка открывается перед главной страницей.

-2
ответ дан Mageek 26 August 2018 в 09:35
поделиться

Попробуйте это. Он отлично работает с хромом, он также работает от расширения хрома. Все это не помогло мне.

chrome.tabs.create({ url: "http://www.google.com/", selected: false }); 
0
ответ дан Trevor 26 August 2018 в 09:35
поделиться

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();
}
7
ответ дан YakovL 26 August 2018 в 09:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: