2015-10-15 5 views
1

У меня есть страница, которая встраивает формы 25 типов (http://www.typeform.com).Несколько типов форм вставляются на одной странице

Каждый раз, когда форма типа внедрена, я добавляю ссылку, а затем скрипт под ней (см. Ниже).

При нажатии ссылки открывается всплывающее окно на странице с формой внутри него.

Мне интересно, можно ли добавить скрипт только один раз, а затем каждую ссылку вызвать его при нажатии, а не добавлять скрипт для каждого встраивания? Я предполагаю, что он сильно влияет на загрузку страницы с загрузкой скрипта в 25 раз.

<a class="typeform-share" href="https://TYPEFORMACCOUNTNAME.typeform.com/to/OnOMuV" data-mode="1" target="_blank">APPLY</a> 

<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script><p class="share-this-role">Share this role</p> 

ответ

1

От вашего кода, и протестировано с некоторыми моими typeform виджетов, вы должны быть безопасным только с последним одного <script>...</script> тегом на HTML, если он содержит тот же XXX.js файла, например:

Примера 1

есть в вашем коде share.js:

<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'share.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script> 

И удалить другие <script>...</script>, если содержит share.jsкроме последняя;

Пример 2

есть в коде ниже widget.js:

<script>(function(){var qs,js,q,s,d=document,gi=d.getElementById,ce=d.createElement,gt=d.getElementsByTagName,id='typef_orm',b='https://s3-eu-west-1.amazonaws.com/share.typeform.com/';if(!gi.call(d,id)){js=ce.call(d,'script');js.id=id;js.src=b+'widget.js';q=gt.call(d,'script')[0];q.parentNode.insertBefore(js,q)}})()</script> 

и безопасно удалить все другие <script>...</script> который содержит widget.jsкроме последний;

так что он основан на JS файлов в коде typeform работать

Не потерял ни .js, и вам не нужно больше, чем 1

Поправьте меня, если тест не работа. Поскольку это 25 форм, предсказать все это непросто.

+0

работает угощение. Спасибо! –

Смежные вопросы