Javascript Youtube API仅在第一页访问时加载
我已经编写了一个小的移动web应用程序,可以从手机上控制PC上的YouTube,但是在使用YouTube API进行搜索时发生了一些奇怪的事情。第一次加载页面时,一切都很好-输入搜索词,单击搜索并返回结果 但是,如果我单击另一个页面,然后返回,搜索将不再工作,我会在下面的搜索函数中看到“UncaughtTypeError:无法读取'search'undefined'的属性” 我对JavaScript非常陌生,所以可以随意批评代码,但我已经看到这个问题有一段时间了,尽管谷歌搜索了很多次,但仍然没有找到解决方案Javascript Youtube API仅在第一页访问时加载,javascript,jquery,api,youtube,Javascript,Jquery,Api,Youtube,我已经编写了一个小的移动web应用程序,可以从手机上控制PC上的YouTube,但是在使用YouTube API进行搜索时发生了一些奇怪的事情。第一次加载页面时,一切都很好-输入搜索词,单击搜索并返回结果 但是,如果我单击另一个页面,然后返回,搜索将不再工作,我会在下面的搜索函数中看到“UncaughtTypeError:无法读取'search'undefined'的属性” 我对JavaScript非常陌生,所以可以随意批评代码,但我已经看到这个问题有一段时间了,尽管谷歌搜索了很多次,但仍然没有
// Called automatically when JavaScript client library is loaded.
function onClientLoad()
{
//
try
{
gapi.client.load('youtube', 'v3', onYouTubeApiLoad);
}
// Called automatically when YouTube API interface is loaded.
function onYouTubeApiLoad()
{
gapi.client.setApiKey('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
}
function search(q) {
// Create api request and execute it
var request = gapi.client.youtube.search.list({
type: 'video',
part: 'snippet',
q: q
});
// Send the request to the API server,
// and invoke onSearchRepsonse() with the response.
request.execute(onSearchResponse);
}
function onSearchResponse(response) {
showResponse(response);
}
指向API脚本的链接位于my search.aspx页面中,如下所示:
<script src="https://apis.google.com/js/client.js?onload=onClientLoad" type="text/javascript"></script>
JQuery也被使用,所以我不知道是否有什么有趣的事情在那里引起,但在这一点上任何想法都将非常感谢 确保在执行
onYouTubeApiLoad()
之后调用search()
。
如果要将search()
绑定到单击事件,请确保在回调中执行此操作:
function onYouTubeApiLoad()
{
gapi.client.setApiKey('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');
$("button#search").on("click", function(){ search(...); })
}
看来我明白了。看起来API的初始加载是在首次加载脚本时完成的
<script src="https://apis.google.com/js/client.js?onload=onClientLoad" type="text/javascript"></script>
但在离开和返回页面时不会再次加载。我添加了onClientLoad();到
$(文档)。it的就绪功能现在似乎正在运行。感谢您的建议,我已经尝试过了,但不幸的是仍然遇到同样的问题。在搜索函数本身的以下行抛出错误:var request=gapi.client.youtube.search.list({….如果client.js是服务器上的本地文件(/lib/client.js),则回调参数似乎将被忽略:。