Реализация «открыть все в ...» с помощью букмарклета - PullRequest
0 голосов
/ 28 мая 2020

Я хотел бы открыть группу URL-адресов, по одному на вкладку (предположим, что браузер настроен соответствующим образом) с помощью букмарклета (это для мобильных браузеров, которые, насколько я могу судить, не имеют подгруппы URL-адресов, и не поддерживайте "Открыть все в ..."). Основной код букмарклета:

const sites = ["a", "b", "c"];
sites.forEach(function (v, _) { window.open("http://twitter.com/" + v); }

Этот код не работает: он открывает первый URL в новой вкладке и больше ничего не делает. Возможно, я испортил шаблон букмарклета, но если я наберу тот же код в консоли, я получу тот же результат (плюс, если я изменю window.open на alert, букмарклет будет работать должным образом).

Я возился со вторым аргументом для window.open, используя "_blank" (по умолчанию, я считаю) и "win" + i (когда формальный параметр индекса добавлен к функции delcaration), но без особого эффекта. Есть ли у кого-нибудь предложения относительно того, что я могу сделать, чтобы этот код работал? Или предложить правильный код для того, что я хочу? Такое поведение наблюдается на Chrome 80.0.3987.149 и Firefox 74.

1 Ответ

0 голосов
/ 28 июля 2020

Предположим, вы пытаетесь создать букмарклет для открытия трех новых страниц с адресами http://twitter.com/a, http://twitter.com/b и http://twitter.com/c, тогда вам необходимо:

  1. закрыть скобки открытый слева от function в вашем примере
  2. отключите блокировку всплывающих окон
  3. используйте эту строку в качестве адреса букмарклета и щелкните по ней:
javascript:const sites = ["a", "b", "c"]; sites.forEach(function (v) { window.open("http://twitter.com/" + v) })
...