1

Youtube の Videobar は時代遅れのウィジェットです。Google は引き続き js を提供していますが、ドキュメントとリンクはサイトから削除されています。この実行例は、sicmaui.com (右側、YouTube タブ) で見ることができます。

現在、htmlのスクリプトタグを使用してロードされています

<script src="http://www.google.com/uds/api?file=uds.js&v=1.0&source=uds-vbw" type="text/javascript"></script>
GSearch.setOnLoadCallback(somefunction); //works

しかし、次のコードを使用してこれをロードしようとすると機能しません

var $script = $('<script></script>').attr('src', src).bind('load', function(){
GSearch.setOnLoadCallback(somefunction); //GSearch is undefined
});
$('head')[0].appendChild($script[0]);

これで、js が完全に正常にロードされます。しかし、変数は定義されていません。Google の js を掘り下げたところ、後でこのコードを使用して別の js ファイルを読み込んでいることがわかりました。

google.loader.writeLoadTag("script", google.loader.ServiceBase + "/api/search/1.0/8c68537a8c14de310f268bd7f81c9c67/default+en.I.js", false);

呼び出しを行う (「n」はドキュメントに等しい)

n.write('<script src="' + b + '" type="text/javascript"><\/script>')

理想的には、この js はページ コンテンツ全体をこのスクリプトで上書きする必要があります。しかし、何らかの理由でそうではなく、これは私を夢中にさせています!

いずれにせよ、私の主な目標は、このファイルを非同期的にロードすることです。

4

1 に答える 1

0

jQuery のgetScript;を使用してみてください。関与したくないすべての混乱を処理します。属性の追加、とイベント ハンドラーのasync両方の定義、メモリ リークの回避などです。</p> readystatechangeload

編集:

根本的な問題については、非同期でロードすると、このスクリプトを機能させることができないと思います。document.writeは本質的に同期的です。この関連する質問を参照してください:警告: 非同期にロードされた外部スクリプトからの document.write() への呼び出しは無視されました。これはどのように修正されますか?

于 2012-12-10T11:20:18.340 に答える