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应该用这个脚本覆盖整个页面内容。但由于某种原因,它没有这样做,这让我疯了!
无论哪种方式,我的主要目标是异步加载此文件。
答案 0 :(得分:0)
您应该尝试使用jQuery's getScript
;它处理你不想参与的所有混乱:添加async
属性,定义readystatechange
和load
事件处理程序,避免内存泄漏,...
至于你的根本问题:如果你异步加载它,我认为你不能让这个脚本工作。 document.write
本质上是同步的。请参阅此相关问题:Warning: A call to document.write() from an asynchronously-loaded external script was ignored. How is this fixed?