Ну, да, но вы не понимаете, почему это сейчас работает, только то, что кажется. Я предполагал, что, на мой взгляд, является улучшением, также я предполагал, что вы ищете альтернативы и разные взгляды на проблему; иначе кажется бессмысленным использование StackExchange.
ользую Google Custom Search Engine с новой функцией автозаполнения. Я хочу, чтобы весь этот JavaScript загружался ПОСЛЕ самой страницы. Оригинальный код Google это:
<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('search', '1');
google.setOnLoadCallback(function() {
google.search.CustomSearchControl.attachAutoCompletion(
'some-long-unique-id',
document.getElementById('q'),
'cse-search-box');
});
</script>
<script type="text/javascript" src="http://www.google.com/cse/brand?form=cse-search-box&lang=cs"></script>
Я преобразовал этот код, используяучебник о динамической загрузке JS к этому коду:
(function() {
var goog = document.createElement('script'); goog.type = 'text/javascript';
goog.src = 'http://www.google.com/jsapi';
var cse = document.createElement('script'); cse.type = 'text/javascript';
cse.src = 'http://www.google.com/cse/brand?form=cse-search-box&lang=cs';
goog.onload = function() {
google.load('search', '1');
google.setOnLoadCallback(function() {
google.search.CustomSearchControl.attachAutoCompletion(
'some-long-unique-id',
document.getElementById('q'),
'cse-search-box');
});
};
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(cse, s);
s.parentNode.insertBefore(goog, s);
})();
Ну, хотя я думаю, что мое решение должно работать (так же, как Google изменил свой асинхронный код Google Analytics по требованию), это не так. Страница загружается нормально, и как только CSE загружается, страница становится пустой. Что-то очищает DOM, я полагаю, что-то вроде "Google вещь"? Может ли кто-то пролить свет на эту проблему и, возможно, на рабочее решение?
Спасибо