Можно ли вставить встроенный код javascript в другой код javascript / jquery? - PullRequest
0 голосов
/ 11 января 2012

Этот вопрос выглядит немного глупым ... но мне интересно, возможно ли вставить встроенный код JavaScript в другой код JavaScript.Проясним это следующим образом:

Я пытаюсь поместить кнопку Google Plus, добавляя ее через jquery следующим образом:

jQuery('.gplus').append('<g:plusone annotation="inline"></g:plusone>');

Для правильной работы этой кнопке нужны внешние js.То, что я пытаюсь сделать, это вставить внешние js, выполняя это:

var gplusjs = '
<script type="text/javascript">
  (function() {var po = document.createElement("script");
    po.type = "text/javascript"; po.async = true;
    po.src = "https://apis.google.com/js/plusone.js";
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(po, s);
  })();
</script>';
jQuery('#js').append(gplusjs);

В результате получается код, напечатанный как HTML, но не интерпретированный как скрипт.Это возможно?Я тупица?Спасибо!

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Это потому, что jQuery добавляет и сценарии не работают. Сделай это по старинке

var gplusjs = '(function() {var po = document.createElement("script");po.type = "text/javascript"; po.async = true;po.src = "https://apis.google.com/js/plusone.js";var s = document.getElementsByTagName("script")[0];s.parentNode.insertBefore(po, s);})();';
var script = document.createElement("script");
script.textContent = gplusjs;
document.head.appendChild(script);

Также обратите внимание, что многострочные строковые литералы не существуют в JS.

3 голосов
/ 11 января 2012

Вы должны просто выполнить этот код в обычном режиме:

var po = document.createElement("script");
po.type = "text/javascript"; po.async = true;
po.src = "https://apis.google.com/js/plusone.js";
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(po, s);

Или, еще проще:

$.getScript("https://apis.google.com/js/plusone.js");
...