@Dmax99

Как открывать ссылки пакетами?

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

Может есть вариант открывать например по 10 ссылок с интервалом 3 сек?

Вот скрипт
function LINKNAME() {
  var r = confirm("Открыть 100 вкладок?");
  if (r == true){
    {% if products %}
{% for product in products %}
	{% for actione in product.actione %}
	{% if actione.url %}
    var http = "{{ actione.url }}";
    var win1 = window.open(http);
 	{% endif %}
	{% endfor %}
{% endfor %}
{% endif %}
  } else {
    alert('Сообщение при отмене');
  }

}
  • Вопрос задан
  • 52 просмотра
Решения вопроса 2
Mike_Ro
@Mike_Ro Куратор тега JavaScript
Python, JS, WordPress, SEO, Bots, Adversting
Может есть вариант открывать например по 10 ссылок с интервалом 3 сек?

setInterval()
https://developer.mozilla.org/en-US/docs/Web/API/s...
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
В твиге сначала собрать все ссылки в один JS массив. Тогда в вопросе покажем реальное общее количество ссылок, а не хардкодед "100".

Можно просто зарядить таймауты с пачками ссылок:
function LINKNAME() {
  const urls = [];
  {% if products %}
    {% for product in products %}
      {% for actione in product.actione %}
        {% if actione.url %}
          urls.push('{{ actione.url }}');
        {% endif %}
      {% endfor %}
    {% endfor %}
  {% endif %}

  const isOkay = confirm(`Открыть ${urls.length} вкладок?`);
  if (!isOkay){
    alert('Сообщение при отмене');
    return;
  }
  // открываем
  const batchSize = 5; // по сколько за 1 раз одновременно открывать
  const pause = 3; // пауза в секундах между пачками
  let iteration = 0;

  while (urls.length) {
    const batch = urls.splice(0, batchSize);
    setTimeout(() => batch.forEach(url => window.open(url)), iteration * pause * 1000);
    iteration++;
  }
}
А то можно бы с генератором..
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы