Динамически создавайте "Line it!" кнопка поделиться

У нас есть линия это! Кнопка "Поделиться" на нашей странице, блокирующая загрузку наших собственных ресурсов, вызывает большую проблему с производительностью.

С реализацией кнопки Line Share, предложенной line.me, их скрипт line-button.js должен быть включен в середину страницы, где когда-либо должна отображаться кнопка. Кнопка заменяет <script> элемент, из которого он инициирован:

<script type="text/javascript">
    new media_line_me.LineButton({"pc":false,"lang":"en","type":"b"});
</script>

Я могу добавить скрипт line-button.js на страницу после того, как наш собственный завершится:

function includeLine(callback) {
    var script = document.createElement('script');

    script.async = true;

    script.onload = callback;

    script.src = "//media.line.me/js/line-button.js?v=20140411";

    document.body.appendChild(script);
}

Затем я могу добавить элемент script следующим образом:

function initLine() {
    var 
        script = document.createElement('script'),
        line = ['new media_line_me.LineButton({"pc":false,"lang":"'];

    line.push(util.getLang());
    line.push('","type":"b"});');

    script.text = line.join('');

    publ.$elements.shareLine.append(script);
};

Но в line-button.js media_line_me.LineButton присоединяет слушателя к window.onload событие, которое к этому времени уже произошло.

Я действительно хочу убедиться, что все остальное сделано до того, как начнут загружаться какие-либо виджеты социальных сетей. Но сейчас у меня нет идей.

Есть ли другое решение, которое не загружает файл JS в виде текста, переписывает его в нашем скрипте, а затем eval() Это?

1 ответ

Вот твой идеальный ответ

кнопка динамического обмена LINE

Github - Naver LINE динамическая кнопка обмена

Кнопка динамического обмена добавляет:

  • класс CSS для обоих <a> а также <img>

  • Все параметры теперь являются мета-свойствами

  • загружает асинхронно, никакого взаимодействия не требуется!!

Пример использования

<!doctype html>
<html xmlns:og="http://ogp.me/ns#">
    <head>
        <meta name="naver-line-selector" content="" />
        <meta property="og:locale" content="en_US" />
        <meta property="og:url"    content="http://www.google.com" />
        <meta property="og:title" content="Dynamic Share button 0" />
        <script src="jquery.js"></script>
        <script>
            jQuery(document).ready(function() {
                $('meta[property="og\\:url"]').attr('content', 'https://www.google.com');
                $('meta[property="og\\:title"]').attr('content', 'Lets exchange LINE');
                $('meta[property="og\\:locale"]').attr('content', 'en_US');
                $('meta[name="naver-line-selector"]').attr('content', '#after-this');
               (function(d) {
                   var po = d.createElement('script');
                   po.type = 'text/javascript'; po.async = true;
                   po.src = 'naver-LINE-share-button.js?v=20140411';
                   var s = d.getElementsByTagName('script')[0];
                   s.parentNode.insertBefore(po, s);
              })(document);
          });
        </script>
    </head>
    <body>
        <div id="after-this"></div>
    </body>
</html>

Обратите внимание, что реализация - это чистый JavaScript. jQuery $. уже используется только для HTML для удобства

Призыв к действию

Могли бы использовать следующее

  • Глянцевая кнопка с закругленными углами

  • распространяя эту библиотеку JavaScript повсюду

Другие вопросы по тегам