Как отключить «Открыть ссылку в новой вкладке» в браузере? - PullRequest
13 голосов
/ 10 августа 2011

Как отключить / удалить параметр «Открыть ссылку в новой вкладке» в контекстном меню браузера?Если это невозможно с javascript и т. Д., Есть ли способ изменить то, что происходит, когда пользователь нажимает на эту ссылку, например, отображать предупреждение или предотвращать загрузку вкладки ...?

Ответы [ 4 ]

8 голосов
/ 06 февраля 2015

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

HTML:

<a href="http://google.com">Can be opened in new tab/window</a>
<a>Cannot be opened in new tab/window</a>

Теперь есть и другие вещичто браузер может делать для вас по умолчанию, когда видит ссылку.Если вы не определили какой-либо стиль элементов a, вполне вероятно, что ваша новая причудливая псевдосвязь не будет отображаться со шрифтом цвета шрифта, указателем и подчеркиванием.Вы можете сделать это достаточно легко.

CSS:

a {
    color: blue;
    cursor: pointer;
    text-decoration: underline;
}

Это, надеюсь, ответит на вопрос о том, как отключить / удалить «Открыть ссылку в новом».Параметр Tab 'в контекстном меню браузера.Для некоторого дополнительного кредита, хотя я собираюсь предположить, что вы, вероятно, хотите, чтобы ссылка все еще функционировала как обычная ссылка при нажатии.Не стесняйтесь использовать JavaScript, чтобы это произошло.Вот пример использования jQuery:

JavaScript:

$("body").on("click", "a[data-href]", function() {
    var href = $(this).data("href");
    if (href) {
        location.href = href;
    }
});

Модифицированный HTML:

<a href="http://google.com">Can be opened in new tab/window</a>
<a data-href="http://google.com">Cannot be opened in new tab/window</a>

Модифицированный CSS:

a[href], a[data-href] {
    color: blue;
    cursor: pointer;
    text-decoration: underline;
}

Надеюсь, это поможет!

2 голосов
/ 16 августа 2011

Решил основную проблему сейчас, довольно легко, как оказалось, просто передав строку запроса href в функцию ajax.

Я, вероятно, должен был объяснить в своем вопросе, что то, что я хотел, было задумано только как временная мера.В любом случае, спасибо за все комментарии.

0 голосов
/ 13 июня 2019

2019

Я выделю 2 важных комментария:

  1. nnnnnn @ 10 августа 11 в 5:49:

    Как пользователь, я бы предпочел, чтобы этот тип функции вызывался кнопкой, а не ссылкой.Я ожидаю, что ссылки будут работать более стандартным способом, включая предоставление мне возможности щелкнуть правой кнопкой мыши по меню или щелкнуть средней кнопкой мыши, чтобы открыть непосредственно на новой вкладке. Pars @ 21 декабря '13 в 13:10:

    это не будет работать, когда вы щелкаете средней кнопкой мыши или удерживаете клавишу CTRL и нажимаете на ссылку.как с этими случаями.

Браузер должен решить, получает ли он поведение ссылки или нет.

Некоторые современные браузеры (например, Chrome) будут считать его ссылкой, если все соответствуют приведенным ниже условиям:

  1. Это тег <a>...</a> (не span), div, button и т. Д.).
  2. Имеет атрибут href.
  3. href Атрибут не пуст.

Ниже получит поведение ссылки:

<a href="http://www.website.com">Click Here</a>

Ниже НЕ получит поведение ссылки:

<a>Not link because no href</a>
<a href="">Not link because empty href</a>
<span>Not link because not "a" tag</span>
<span href="http://www.website.com">Not link because not "a" tag again</span>

Важное примечание:

Опять же, браузер должен решить .Некоторые старые / глупые браузеры могут дать ему поведение ссылки, если ЛЮБОЕ из 3-х условий выше соответствует!

Заключение

Если это ссылка, тоиспользуйте <a href="some_link">...</a>.Если это не ссылка, используйте что-то еще, например <button>.

0 голосов
/ 10 августа 2011

Я не уверен, почему кто-то понизит ваш вопрос, что вам нужно Google, как перехватывать события с помощью javascript.Вы можете очень хорошо показать предупреждение, когда нажимаете на ссылку и прекращаете ее работу.jQuery - это популярный инструментарий JS, в котором есть метод для остановки событий по умолчанию на элементе, на простом английском языке, с помощью jQuery вы можете остановить работу гиперссылки и показать предупреждениеЭта ссылка http://api.jquery.com/event.preventDefault/ может помочь вам в дальнейшем.Что касается отключения контекстного меню, которое появляется при щелчке правой кнопкой мыши на веб-странице, да, это очень возможно.Я не ниндзя JS, поэтому не могу комментировать, если вы можете удалить элемент из контекстного меню, но IMO, это не должно быть возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...