После более чем часа попыток заставить его работать, я думаю, что это из-за междоменных политик, но я действительно думал, что это сработает. Я тоже не могу найти много информации о нем. Но вот моя проблема. У меня есть сайт с именем http://mysite.com, а затем я включаю сторонний скрипт (то, что я пишу) и его на http://supercoolsite.com/api/script.js, и этот скрипт должен загружаться динамически Google Maps API по адресу: http://maps.google.com/maps/api/js?sensor=false перед запуском. Ну, я подумал, что этот код будет работать:
function loadScript(filename,callback){
var fileref=document.createElement('script');
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", filename);
fileref.onload = callback();
if (typeof fileref!="undefined"){
document.getElementsByTagName("head")[0].appendChild(fileref)
}
}
loadScript('http://maps.google.com/maps/api/js?sensor=false',function(){
console.log('done loading');
init();
});
Но мой ответ в моей консоли:
api.js:408 done loading
api.js:115 test
api.js:310 Uncaught ReferenceError: google is not defined
"test
" находится вверху init()
. Итак, он загружает скрипт, но, похоже, не выполняет его. Итак, есть идеи? Если это проблема межсайтового скриптинга, мой единственный способ исправить это, о котором я мог бы подумать, - это PHP-скрипт на нашей стороне, который в основном просто устанавливает заголовок в текстовый/javascript-заголовок, а затем echo file_get_contents()
в файл googlemaps.php
, который мы размещаем. Мы собираемся попробовать это, пока мы говорим, но, если возможно, способ сделать это с помощью чистого JS был бы потрясающим.
P.S. Я также пытался добавить jQuery, а затем выполнить getScript()
, и это все равно не сработало.
-- ОБНОВИТЬ --
См. эту скрипту: http://jsfiddle.net/ycMCa/2/
Вы увидите, что в консоли появляется сообщение об ошибке: Uncaught TypeError: undefined is not a function
Несмотря на это переменная google
является глобальной.