Хобрук: Ваш путь к мастерству в программировании

Как сделать так, чтобы ссылки popup.html открывались во вкладке?

У меня есть расширение Chrome, в котором есть несколько ссылок. В настоящее время при нажатии ссылки ничего не делают, я хотел бы, чтобы они открывались в новой вкладке при нажатии. Это возможно?



Ответы:


1

Добавьте target="_blank" к ссылкам.

Другой способ — прикрепить код javascript, открывающий ссылку, к событию mousedown по ссылке.

Вы также можете использовать тег base, чтобы все ссылки открывались с помощью target="_blank":

<head>
    <base target="_blank">
</head>
28.12.2010
  • +1. Обязательно указывайте http:// (а не только www.) в ссылках, иначе они будут открываться относительно расширения. 29.12.2010
  • Хорошо, дело в том, что я получал javascript из внешнего источника, поэтому, насколько мне известно, я не могу его редактировать. 29.12.2010
  • @ user556396, значит, вы не можете редактировать html и не можете редактировать javascript? Это внутри iframe или что-то в этом роде? 29.12.2010
  • нет, я использовал: ‹script src=example.com/example.js type=text/javascript›‹ /скрипт› 29.12.2010

  • 2

    У меня была такая же проблема, и это был мой подход:

    1. Создайте popup.html со ссылкой (и ссылки не работают при нажатии, так как Chrome их блокирует).
    2. Создайте popup.js и свяжите его со страницей: <script src="popup.js" ></script>
    3. Добавьте следующий код в popup.js:

      document.addEventListener('DOMContentLoaded', function () {
          var links = document.getElementsByTagName("a");
          for (var i = 0; i < links.length; i++) {
              (function () {
                  var ln = links[i];
                  var location = ln.href;
                  ln.onclick = function () {
                      chrome.tabs.create({active: true, url: location});
                  };
              })();
          }
      });
      

    Вот и все, после этого ссылки должны работать.

    18.07.2013
  • Вы забыли закрыть переменную i в замыкании. Кроме того, chrome.tabs.create не требует никаких разрешений. 19.07.2013
  • Мне не нужно закрывать над i, достаточно только ln и location. Вы правы насчет разрешения, изменили мой ответ. 19.07.2013

  • 3

    Re: есть другой способ

    chrome.tabs.create( { url: "http://www.ajaxian.com"} );
    

    См. http://code.google.com/chrome/extensions/tabs.html

    28.12.2010
    Новые материалы

    Я собираюсь научить вас Python шаг за шагом
    Привет, уважаемый энтузиаст Python! 👋 Готовы погрузиться в мир Python? Сегодня я приготовил для вас кое-что интересное, что сделает ваше путешествие более приятным, чем шарик мороженого в..

    Альтернатива шаблону исходящих сообщений для архитектуры микросервисов
    Познакомьтесь с двухэтапным сообщением В этой статье предлагается альтернативный шаблон для папки Исходящие : двухэтапное сообщение. Он основан не на очереди сообщений, а на..

    React on Rails
    Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

    Что такое гибкие методологии разработки программного обеспечения
    Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

    Ториго  — революция в игре Го
    Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

    Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
    Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

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