Подтвердить что ты не робот

Как сделать ссылку открытой в новой вкладке или окне в Meteor

Я не нашел ничего, что сработало. Я пробовал все следующие, безрезультатно:

  • добавлен атрибут target="_blank" в <a>
  • добавлен target="someName" в <a>
  • URL начинается с '/'
  • URL начинается с Meteor.absoluteUrl()
  • URL начинается с Meteor.absoluteUrl() с удаленным "http://"
  • URL как строковый литерал, не возвращенный из помощника шаблона
  • <a> внутри области {{#constant}} в шаблоне
  • <a> не внутри области {{#constant}} в шаблоне
  • <a> в теле вне любого шаблона вообще
  • <a>, прикрепленный к телу в консоли браузера.
  • window.open([url],[target]) со всеми вышеупомянутыми комбинациями.

Во всех случаях ссылка открывается на той же вкладке, где она была нажата, за исключением URL-адресов, которые не начинались с http://, которые открыли страницу about:blank на новой вкладке.

Любая идея, что вызывает это, или как его решить?

4b9b3361

Ответ 1

Это похоже на ошибку. Я думаю, что Meteor должен игнорировать ссылки с target="_blank". Возможно, вы можете создать проблему в отслеживании проблем

Тем не менее, я успешно сделал это как работу:

test.html

<template name="test">
  <a href="/new-window" target="_blank">Open new window</a>
</template>

test.js

Template.test.events({
  'click a[target=_blank]': function (event) {
    event.preventDefault();
    window.open(event.target.href, '_blank');
  }
});

Кроме того, я обнаружил, что добавление http:// работает для внешних ссылок, например.

<a href="http://twitter.com" target="_blank">Open new window</a>

Я не уверен, почему эти вещи не сработали для вас. Однако я тестировал их только в Chrome, поэтому, возможно, это проблема с браузером.

Ответ 3

Я слишком поздно опоздал на вечеринку, но для тех, кто в конечном итоге попытается найти решение этой проблемы (например, я), я просто хочу сделать кое-что о подходе window.open([url],[target]), упомянутом, для тем, кому нужно окно необходимости, вместо новой вкладки.

Третий параметр для window.open - это список спецификаций, разделенных запятыми. Значением по умолчанию для второго параметра является _blank, который заставит новое окно открываться на новой вкладке.

window.open(event.target.href, "", "width=200, height=200"); должен открыть целевой URL в новом окне (а не новую вкладку) с заданными параметрами.

Ответ 4

создать этот глобальный помощник

Helpers.addHttp = function (url) {
  if (!/^(f|ht)tps?:\/\//i.test (url)) {
    url = "http://" + url;
  }
  return url;
}

используя его в шаблоне

<a href="{{addHttp url}}" target="_blank">some text</a>