2011-11-05 3 views
1

Я использую этот код, но javascript не загружается.Невозможно загрузить JS динамически (без jQuery)

var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
var prefix = this.is_current_https ? "https://" : "http://"; 
script.type = 'text/javascript'; 
script.onload = fnCustomHandler; 
script.src = prefix + 'apis.google.com/js/plusone.js'; 
head.appendChild(script); 

даже не слушает script.onreadystatechange, генерирует любой выход.

Когда я отлаживаю console.log(script) Я вижу, что весь элемент создан правильно, но ссылочный скрипт не загружен.

Я попытался слишком head.appendChild(script.cloneNode(true));

Notes

  • после document.onload
  • в Google Chrome
  • без ошибок в консоли

Примечания 2

Обнаруженный на @john_doe комментарий, код сценария получает впрыскивается в страницу (в html-> головы), но не загружен (как показано на вкладке Networking). Что может вызвать это?

+0

Что ошибка отображается в консоли? – Andreas

+0

Какой браузер вы используете? – Shedokan

+0

no error, google chrome –

ответ

2

Он говорит, что он загружает объект:

var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
var prefix = this.is_current_https ? "https://" : "http://"; 
script.type = 'text/javascript'; 
script.onload = function() { 
    alert('typeof window.gapi.plusone === ' + typeof window.gapi.plusone); // this 
}; 
script.src = prefix + 'apis.google.com/js/plusone.js'; 
head.appendChild(script); 
+0

в моем случае функция в 'onload' даже не запускается ... –

+0

Если вы можете получить доступ к http://apis.google.com/js/plusone.js то должно быть с вашей средой (приложение/браузер). Как видите, он должен работать: http://jsfiddle.net/Nss4H/ –

+0

Да, я вижу. Мой код запускается при загрузке с расширением google chrome. 'setTimeout' тоже не работает –

1

Я пробовал, и ошибка в том, что fnCustomHandler не деформирован, если я беру эту строку, он отлично загружается.

EDIT - я попытался

var head = document.getElementsByTagName('head')[0]; 
var script = document.createElement('script'); 
var prefix = this.is_current_https ? "https://" : "http://"; 
script.type = 'text/javascript'; 
script.onload = function(){ 
alert('hi'); 
}; 
script.src = prefix + 'apis.google.com/js/plusone.js'; 
head.appendChild(script); 

и он работает нормально, так что должно быть проблемой в функции

+0

«fnCustomHandler» - это то, что он использует для прослушивания сценария, когда он загружается – Shedokan

+0

да, его имя образца функции обработчика. но эта функция не запускается вообще –

+0

@MarekSebera я отредактировал свой ответ, попробовав функцию образца, и я запускаюсь как в firefox, так и в хроме –

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