Если вы хотите использовать описанную вами функциональность, вам, вероятно, нужно немного изучить AJAX.
По сути, вы в настоящее время встраиваете скрипт какой-то другой стороны, которая предлагает подобную систему (Facebook, Twitter, Google,…).Это загружает при загрузке страницы и заполняет некоторые элементы различными кнопками.Теперь вам нужно отложить выполнение встроенного скрипта, пока не произойдет какое-либо событие (пользователь нажимает кнопку «Поделиться»).
Есть подробное сообщение в блоге с примером кода для кнопки «Нравится» на Facebook, но процесс практически одинаков для всех.места.См. http://www.torbenleuschner.de/blog/119/ladezeit-facebook-like-button-per-jquery-nachladen/ (немецкий язык)
Ключевым моментом является наличие пустого элемента для кнопок, который заполняется только после события (щелкните в вашем случае).Например:
<div class="popup-share"></div>
Затем вам нужно ждать события так же, как вы используете в настоящее время.Но вместо того, чтобы создавать скрипты создания кнопок на загруженной странице, мы будем предполагать, что они содержатся в keys-фрагмент.html.
// Delay function's execution until click and call it exactly once
$('.share').one('click', function loadLikeButtons(e) {
// Get the empty element
var likeButtonContainer = $('.popup-share');
// Fetch the code which contains the buttons (this is AJAX in the background)
$.get('your-server.com/buttons-fragment.html', {}, function fillInLikeButtons(data){
// The code in this inner function runs as soon as the code for the buttons is available / was successfully loaded.
// The argument data contains the same HTML fragment that you are currently using to create the buttons
// Place the buttons (or button initialization scripts within the still empty button holder
likeButtonContainer.html(data);
});
});
Примечание: для решения с более высокой производительностью пропустите AJAX-запрос на выборку HTMLфрагмент.Вместо этого перенесите его с загрузкой страницы, но сохраните в переменной JavaScript.Вставьте его в пустой элемент, удерживающий кнопку, по нажатию кнопки «Поделиться».Я не ставил это решение, потому что думаю, что иметь только одно решение в ответе на ваш вопрос легче для понимания.Возможно, вы захотите открыть еще один вопрос о том, как передать фрагмент HTML при загрузке страницы и вставить его в какое-либо событие.
Также обратите внимание, что я никогда не проверял код, напечатанный выше.Возможно, вы можете нажать опечатки.
В качестве дополнительного примечания (не является частью ответа): учитывайте вопросы, связанные с конфиденциальностью, при размещении на вашем сайте одинаковых кнопок, а также связанные с производительностью вещи.Предположим, что кнопки созданы аналогично следующему коду:
<script src="http://connect.facebook.net/en_US/all.js#xfbml=1"></script>
<fb:like layout="box_count" show_faces="false" width="55" font="arial"></fb:like>
Как только браузер обнаружит фрагмент, он загрузит скрипт из Facebook.При этом передается адрес вашей страницы, а также возможно установить куки с Facebook.Поэтому, если кто-то все еще вошел в Facebook, Facebook сможет отслеживать его посещение вашего сайта, как только ваш сайт будет загружен.С ответом, представленным выше, это происходит только при нажатии кнопки «Поделиться» (потому что это вызывает загрузку внешних скриптов).