我有一个用于facebook集成的javascript,当我将它包含在我的HTML正文中时,它可以正常工作。现在,由于我有很多页面都需要facebook auth脚本,我将它保存在一个单独的文件中并将其包含在我的所有页面中,但是当我这样做时,脚本似乎停止运行。这是代码
//Ajax XML Loaders
var xmlhttp;
function loadXMLDoc(url,cfunc)
{
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
window.fbAsyncInit = function() {
FB.init({appId: 'xxxxxx', status: true, cookie: true, xfbml: true});
/* All the events registered */
FB.Event.subscribe('auth.login', function(response) {
// do something with response
login();
});
FB.Event.subscribe('auth.logout', function(response) {
// do something with response
logout();
});
FB.getLoginStatus(function(response) {
if (response.session) {
// logged in and connected user, someone you know
}
});
};
(function() {
var e = document.createElement('script');
e.type = 'text/javascript';
e.src = document.location.protocol +
'//connect.facebook.net/en_US/all.js';
e.async = true;
document.getElementById('fb-root').appendChild(e);
}());
function login(){
//Fire the PHP Facebook Auth Script
loadXMLDoc('http://www.website.com/scripts/php/facebook_auth.php',function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
if (xmlhttp.responseText == "Success"){
window.location.reload;
}else{
window.location = "http://www.website.com/login_failed.php";
}
}
});
}
function fblogoutClick(){
FB.logout(function(response) {
});
}
function logout(){
//Fire the PHP Logout Script
loadXMLDoc('http://www.website.com/scripts/php/logout_exec.php',function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
if (xmlhttp.responseText == "Success"){
window.location.reload;
}else{
window.location = "http://www.website.com/logout_failed.php";
}
}
});
}
我把它放在头上:
<script src="http://www.thehoppr.com/scripts/javascript/facebook_login.js"></script>
按钮点击触发FB登录事件,但就像我说的,如果我将它包含在体内,它可以正常工作,但是如果我将它保存在外部并将其加载到头部或身体中,它将停止运行而且我不确定为什么。
答案 0 :(得分:1)
这种情况发生的唯一原因是代码未正确包含在内。就实际运行的代码而言,
之间没有显着差异<script>
foo();
</script>
和
<script src="foo.js"></script>
...其中foo.js包含foo();
,前提是这些标签位于同一位置。如果您将内联标记放在一个位置,但是将外部参考标记放在其他位置,那么当然在脚本的位置方面存在差异。
(是的差异,最值得注意的是,浏览器不必通读脚本代码来查找结束script
标记,这是一件好事;但是这可能与此无关。)
包括脚本在内的最常见错误是:
</script>
标记。<script src="foo.js" />
无效。答案 1 :(得分:0)
您很可能没有正确添加脚本。你使用自闭标签吗? (&lt; /&gt;)
不允许使用