[英]Migrating <script>…</script> to .js file fails
我已經使用oAuth代碼在HTML5的標記內工作。 將其移至.js文件並調用該文件時,出現錯誤。 我嘗試復制工作js文件(app.js)的格式,但似乎無法正常工作。 這是代碼:
oAuth.js
var Facebook = function() {
function mygetLoginStatus() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
mygetProfileData();
} else {
FB.login();
}
});
};
function mygetProfileData() {
FB.api('/me', {
fields: 'first_name, last_name, email, picture, work'
}, function(response) {
document.getElementById('firstname').value = response.first_name;
});
};
return {
init: function() {
window.fbAsyncInit = function() {
FB.init({
appId: '[redacted]',
xfbml: true,
status: true,
version: 'v2.4'
});
};
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
mygetLoginStatus();
mygetProfileData();
},
};
}();
registration.html
<script type="text/javascript" src="assets/js/oAuth.js"></script>
<script type="text/javascript" src="assets/js/app.js"></script>
...
<script type="text/javascript">
jQuery(document).ready(function() {
App.init();
Facebook.init();
});
</script>
安慰:
Uncaught ReferenceError: FB is not defined
mygetLoginStatus @ oAuth.js:12
Facebook.init @ oAuth.js:60
(anonymous function) @ registration.event:441
m.Callbacks.j @ jquery.min.js:2
m.Callbacks.k.fireWith @ jquery.min.js:2
m.extend.ready @ jquery.min.js:2
J @ jquery.min.js:2
我究竟做錯了什么? 這些錯誤與我最初在HTML中編寫代碼時遇到的錯誤類型相同,因此我知道這似乎是某種范圍錯誤。
我想通了。 FB必須在return節中定義,以供其他功能使用。 這是一個范圍問題。 該程序的主要邏輯尚不完善,但需要為其他人進行記錄。
var Facebook = function(){
return {
init: function() {
window.fbAsyncInit = function() {
FB.init({
appId : '[redacted]',
xfbml : true,
status : true,
version : 'v2.4'
});
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
},
getLoginStatus: function() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
//console.log('Logged in.');
getProfileData();
}
else {
FB.login();
}
});
},
getProfileData: function() {
//console.log('Welcome! Fetching your information.... ');
FB.api('/me',{fields: 'first_name, last_name, email, picture, work'}, function(response) {
document.getElementById('firstname').value = response.first_name;
});
}
};
}();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.