Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2024, 17:46
Интересующийся
Отправить личное сообщение для 123456 Посмотреть профиль Найти все сообщения от 123456
 
Регистрация: 12.03.2011
Сообщений: 16

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

Вот методом тыка скрипт настроил, но осталась одна проблема: при нажатии на кнопку поделиться именно в Телеграмм или Ватсапп (остальные открываются в попап окне) происходит переход (в варианте браузера для ПК) на сайт сервиса и, соответственно, уход с сайта. А как сделать чтобы осуществлялось открытие в новом окне конкретно для варианта - Телеграмм / Ватсапп с ПК браузера (на смартфоне идёт открытие 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);
    });
  }
});

Последний раз редактировалось 123456, 28.03.2024 в 19:38.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие ссылок в новом окне serega1976 Events/DOM/Window 7 01.01.2016 14:36
Открыть в новом окне, а при повторном нажатии обновить то же старое-новое окно libinstyle Events/DOM/Window 2 05.04.2010 20:13
Открытие картинки в новом окне при клике на ссылку. J77 Общие вопросы Javascript 2 08.12.2009 08:09
Javascript запрещающий открывать iframe в новом окне. HELP! Андреи Events/DOM/Window 11 26.09.2009 07:36
Открытие рисунка в новом окне Anatom Элементы интерфейса 3 18.03.2008 16:49