2012-01-10 3 views
0

Этот вопрос выглядит немного глупым ... но мне интересно, можно ли вставить встроенный код javascript в другой код javascript. Позволяет поставить это ясно:Можно ли вставить встроенный код javascript в другой код javascript/jquery?

Я пытаюсь поставить 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, но не интерпретируется как сценарий. Это возможно? Я тупица? Благодаря!

ответ

3

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

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"); 
2

Это потому, что 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 нет многолинейных строковых литералов.

+2

На самом деле вы можете создавать многострочные строковые литералы, экранируя каждую строку новой строки с помощью '\' – SLaks

+0

@SLaks, который не является многострочным литералом строки, это грязный взломать с экранированием нового символа строки. – Raynos

+0

@SLaks в качестве дополнительного в сторону недействителен ES3, вам известно, поддерживает ли ES5? – Raynos