Загрузить API пользовательского счета при клике - PullRequest
3 голосов
/ 27 февраля 2012

Uservoice просит вас загрузить асинхронный виджет при загрузке страницы, код которого выглядит следующим образом:

var uvOptions = {};
          (function() {
            var uv = document.createElement('script'); uv.type = 'text/javascript'; uv.async = true;
            uv.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'widget.uservoice.com/loremipsum.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(uv, s);
          })();

А затем они дают вам возможность запустить свой виджет по клику следующим образом:

javascript:UserVoice.showPopupWidget();

Что если я не хочу загружать их виджет, когда страница вообще загружается, только когда пользователь нажимает на ссылку?

Я бы предположил что-то вроде этого:

 $('selector').click(function () {

         var uvOptions = {};
          (function() {
            var uv = document.createElement('script'); uv.type = 'text/javascript'; uv.async = true;
            uv.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'widget.uservoice.com/cyoJokWhM5SEW9I3h3oBFQ.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(uv, s);
          })();
       javascript:UserVoice.showPopupWidget();

   });

Но на самом деле это не работает? Есть ли другой известный способ?

Ответы [ 2 ]

5 голосов
/ 27 февраля 2012

Попробуйте это:

$('selector').click(function () {
    var uvOptions = {};
    var showWidget = function() { window.UserVoice.showPopupWidget(); };
    if(window.UserVoice) return showWidget(); // Loaded already
    $.getScript(
       ('https:' == document.location.protocol ? 'https://' : 'http://') +
       'widget.uservoice.com/cyoJokWhM5SEW9I3h3oBFQ.js',
       showWidget
    );
});
0 голосов
/ 05 февраля 2015

Попробуйте это

<a href="http://back-up-url-goes-here.com" data-uv-trigger>Contact us</a>

см. здесь для более подробной информации

...