新しいオートコンプリート機能を備えたGoogleカスタム検索エンジンを使用しています。ページ自体がロードされた後に、この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がAnalyticsのオンデマンド非同期コードを変更したのと同じように)、機能しません。ページは正常に読み込まれ、CSEが読み込まれるとすぐにページが空白になります。何かがDOMをクリアします、私はそれのある種の「グーグルのもの」だと思いますか?誰かがこの問題とおそらく実用的な解決策に光を当てることができますか?
ありがとう