Добавление элемента скрипта не запрашивает API Google

1

Я загружаю сторонний script элемент, предоставленный Google:

var h = document.getElementsByTagName('head')[0];
var xml = '<script defer="true" src="https://apis.google.com/js/api.js"></script>';
h.appendChild(document.importNode(new DOMParser().parseFromString(xml,'application/xml').childNodes[0],true));

Ни один из браузеров (Waterfox, Chrome, IE11, IE15) не бросает ошибки или предупреждения, они просто не запрашивают файл из Google (ничего не отображается в сетевых запросах). Я проверял, что отчет об ошибках включен/максимальная чувствительность во всех этих браузерах.

Этот сценарий относится к содержимому, которое загружается только через AJAX, поэтому я не могу загрузить скрипт вместе со всем остальным. Почему сценарий даже не пытается выполнить запрос? Это происходит с локальных и живых веб-сайтов.

Теги:
google-api

2 ответа

2
Лучший ответ

Проще просто создать элемент сценария, чем пройти весь этот разбор xml

var h = document.getElementsByTagName('head')[0];

var scr = document.createElement('script')
scr.src = 'https://apis.google.com/js/api.js';
h.appendChild(scr);

scr.onload = () => console.log('Loaded')
  • 0
    Правильно ... Я даже не собираюсь догадываться, почему ваши нет ... лично никогда даже не использовали document.importNode
  • 0
    Я кодирую все, используя XML + HTML5, так что HTML5 служит application / xhtml + xml из-за строгой обработки всего, а document.importNode часто используется при работе с AJAX. Кроме того, я приму после того, как таймер истекает.
Показать ещё 3 комментария
0

Это потому, что ваша голова, скорее всего, закончила загрузку к тому моменту, когда ваш код javascript пытается вставить html в него. Поэтому решением было бы как-то добавить тег в ваш html, прежде чем он начнет загружаться.

  • 0
    Не совсем, я делал это много раз, просто никогда со сторонними доменами. Вы, вероятно, могли бы сделать это (ответ charlietfl) еще в Netscape через 4 дня, если бы createElement тогда поддерживался.
  • 1
    Вы должны быть правы. Извините за недопонимание. Тогда, может быть, это как-то связано с политикой того же происхождения в сочетании с вашим подходом добавления html, не знаю :-) Я просто теоретизирую :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню