google.load search error loading

Начал писать свой плагин живого поиска с помощью Гугл API. Все было бы хорошо, но в момент вызова google.load("search","1") возникал ужасный баг, который делал всю страницу белой (очень похоже на момент, когда на странице неправильно сработал document.write).

Т.к. я подгружал jsapi с помощью jQuery функции $.getScript("http://www.google.com/jsapi?key=KEY") и далее использовал Callback в котором вызывал google.load, отследить момент ошибки было очень сложно. Самое интересное, что в браузере никаких Javascript-ошибок не возникало. Поэтому, я начал пробовать подгружать скрипты отдельно перед тегом </head> (так говорилось в Google-документации). И вуаля, проблема сразу исчезла, но меня это не устраивало, т.к. подгружать кучу скриптов не хотелось, ведь поиском на странице могли воспользоваться, а могли и не пользоваться.

Чтобы выяснить в чем косяк, я выполнил подгрузку скриптов поиска google.load("search","1") через <script language="Javascript" type="text/javascript" src="http://www.google.com/uds/?file=search&v=1"></script> и уже после подгружал jsapi с помощью $.getScript. И случилось невероятное, консоль ошибок в браузере показала ошибку "google_exportSymbol is not defined", по которой и был найден ответ в google-ajax-apis

И тут, разработчик объяснил проблему посоветовав использовать свой callback для функциии google.load. Я попробовал поставить обычную callback-функцию заглушку, и это полностью решило проблему. Так что, если Вы сталкивались с подобным, то просто применяйте функцию кэллбэк заглушки, например так:

google.load("search","1",{'nooldnames': true, "callback":myCallbackBlank});

function myCallbackBlank(){ }

Полезные ссылки: примеры, комната тестирования, интересная статья для новичков

Удачного программирования ;)


13.10.2010 11:01

Комментарии

После долгих поисков и почти пропавшей надежды на запуск из функции попался ваш пост :) Респект!
Аноним |

Copyrights © 2007 - 2026 YaPro.Ru