Задать вопрос
@Ysery

Готовый скрипт «поделиться материалом» — открытие в новом окне, как реализовать?

Доброго времени суток, уважаемые специалисты.

Вот методом тыка скрипт настроил, но осталась одна проблема: при нажатии на кнопку поделиться именно в Телеграмм или Ватсапп (остальные открываются в попап окне) происходит переход (в варианте браузера для ПК) на сайт сервиса и, соответственно, уход с сайта. А как сделать чтобы осуществлялось открытие в новом окне конкретно для варианта - Телеграмм / Ватсапп с ПК браузера (на смартфоне идёт открытие tg://msg / whatsapp://send и ухода с сайта нет)?

Вот часть кода (весь код можно подчеркнуть тут https://jsfiddle.net/29zLw8fx/2/) :

// Mail.ru
    mr: function (options) {
      return 'https://connect.mail.ru/share'
        + '?url=' + encodeURIComponent(_getURL(options))
        + '&title=' + encodeURIComponent(options.title)
        + '&description=' + encodeURIComponent(descr)
        + '&image_url=' + encodeURIComponent(ogimage);
    },

    // Telegram
    tg: function (options) {
      return options.link_telegram
        + '?url=' + encodeURIComponent(_getURL(options))
		+ '&text=' + encodeURIComponent(options.title);
    },

    // WhatsApp
    wa: function (options) {
      return options.link_whatsapp
        + '?text=' + encodeURIComponent(_getURL(options) + " " + options.title);
    },

    // Viber
    vi: function (options) {
      return 'viber://forward'
        + '?text=' + encodeURIComponent(_getURL(options) + " " + options.title);
    }
  };

  function init() {
    var defaultOptions = {
      type: 'email',         // default share type
      url: '',               // url to share
      title: document.title.split(' | ')[0], // title to share
      image: '',             // image to share
      text: '',              // text to share
      utm_source: '',
      utm_medium: '',
      utm_campaign: '',
      popup_width: 626,
      popup_height: 436,
      link_telegram: 'https://t.me/share/url',
      link_whatsapp: 'https://wa.me/'
    };

    function api() {}

    function go(element, options) {
      var withoutPopup = [
        'unknown',
        'vi',
        'tg',
        'wa'
      ];
      var tryLocation = true;
      var link;

      options = _extend(
        defaultOptions,
        _getData(element, defaultOptions),
        options
      );

      if (typeof social[options.type] == 'undefined') {
        options.type = 'unknown'
      }

      link = social[options.type](options);

      if (withoutPopup.indexOf(options.type) === -1) {
        tryLocation = _popup(link, options) === null;
      }

      if (tryLocation) {
        if (element.tagName === 'A'
          && element.tagName === 'a') {
          element.setAttribute('href', link);
          return true;
        } else {
          location.href = link;
          return false;
        }
      } else {
        return false;
      }
    }

    api.go = go;
    api.options = defaultOptions;
    return api;
  }

  return init();
}));

document.addEventListener("DOMContentLoaded", function(event) {
  var shareItems = document.querySelectorAll('.lnkfrend');
  var isIOS = /iPad|iPhone|iPod/.test(navigator.platform)
    || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);
  var isAndroid = /(android)/i.test(navigator.userAgent);
  var options = {};
  if (isIOS || isAndroid) {
    options.link_telegram = 'tg://msg';
    options.link_whatsapp = 'whatsapp://send';
  }
  for (var i = 0; i < shareItems.length; i += 1) {
    shareItems[i].addEventListener('click', function share(e) {
      return JSShare.go(this, options);
    });
  }
});
  • Вопрос задан
  • 97 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 12:39
1000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект
18 дек. 2024, в 12:22
5000 руб./за проект