Javascript Youtube API仅在第一页访问时加载

Javascript Youtube API仅在第一页访问时加载,javascript,jquery,api,youtube,Javascript,Jquery,Api,Youtube,我已经编写了一个小的移动web应用程序,可以从手机上控制PC上的YouTube,但是在使用YouTube API进行搜索时发生了一些奇怪的事情。第一次加载页面时,一切都很好-输入搜索词,单击搜索并返回结果 但是,如果我单击另一个页面,然后返回,搜索将不再工作,我会在下面的搜索函数中看到“UncaughtTypeError:无法读取'search'undefined'的属性” 我对JavaScript非常陌生,所以可以随意批评代码,但我已经看到这个问题有一段时间了,尽管谷歌搜索了很多次,但仍然没有

我已经编写了一个小的移动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),则回调参数似乎将被忽略:。