这是我第一次在stackoverflow上发帖。
我的问题很简单(我认为)。我的任务是允许用户使用Facebook,Google Plus,LinkedIn和Twitter注册。现在,我想要做的是当用户点击社交网络按钮时,它会将它们重定向到注册页面,并带有一个标志,用于确定他们想要使用哪个社交网络。这里没问题。
我想根据他们选择的社交网络动态加载每个API。
我在动态加载Google JS API时遇到问题。在here中找到的样本以直接的方式加载client.js。如果我按照示例代码,我没有问题。但我想动态加载它。
我尝试使用$ .ajax,$ .getScript,甚至尝试将脚本添加到页面,就像您异步调用Google Analytics一样。以上都没有奏效。我的回叫功能不是一直调用的。另外,如果我从$ .ajax和$ .getScript的回调函数调用setApiKey,则gapi.client为NULL。我不知道下一步该做什么。
无效的代码:
(function () {
var gpjs = document.createElement('script'); gpjs.type = 'text/javascript'; gpjs.async = false;
gpjs.src = 'https://apis.google.com/js/client.js?onload=onClientLoadHandler';
var sgp = document.getElementsByTagName('script')[0]; sgp.parentNode.insertBefore(gpjs, sgp);})();
使用$ .getScript
$.getScript("https://apis.google.com/js/client.js?onload=onClientLoadHandler", function () {
console.log("GP JS file loaded.");
SetKeyCheckAuthority();});
使用$ .ajax
$(document).ready(function () {
$.ajax({
url: "https://apis.google.com/js/client.js?onload=onClientLoad",
dataType: "script",
success: function () {
console.log("GP load successful");
SetKeyCheckAuthority();
},
error: function () { console.log("GP load failed"); },
complete: function () { console.log("GP load complete"); }
});});
我可以知道动态调用这个js文件的正确方法是什么?任何帮助,将不胜感激。谢谢。
答案 0 :(得分:1)
好的,我只想到了一个解决方案,但我认为这是一个糟糕的解决方案。请让我知道你对它的看法。
我使用$ .getScript加载js文件
$.getScript("https://apis.google.com/js/client.js?onload=onClientLoadHandler", function () {
console.log("GP JS file loaded.");
SetKeyCheckAuthority();});
然后在我的SetKeyCheckAuthority函数中,当gapi.client为null时,我在1秒后调出一个条件。
function SetKeyCheckAuthority() {
if(null == gapi.client) {
window.setTimeout(SetKeyCheckAuthority,1000);
return;
}
//set API key and check for authorization here }