javascript - 除非调用 onclick,否则脚本不会运行

标签 javascript facebook facebook-graph-api facebook-javascript-sdk

下面的代码在设置为名为 onclick 的函数时有效

<script type="text/javascript">
  function Nome_evento() {
  FB.api("/1718063768425398",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
		document.getElementById("evento").innerHTML = response.name;
      }
    });
		}
</script>

但是当

<script type="text/javascript">
    FB.api("/1718063768425398",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
		document.getElementById("evento").innerHTML = response.name;
      }
    });
</script>
它根本不执行脚本内的任何内容,有什么想法吗?我真的被困住了。

下面是完整的 html 以供进一步了解

<html>
	<?php
	  session_start();
	  $loader = require __DIR__ . '/vendor/autoload.php';
	?>
	<head>
		<title>Ember</title>
	</head>
	<body>
		<h1>Using Facebook API tests space</h1>
		<div id="fb-root"></div>
		<script src="js/face_init_js.js"></script>
		<script>
			
			FB.Event.subscribe('auth.authResponseChange', function (response) {
				  if (response.status === 'connected') {
					alert("Successfully connected to Facebook!");
				  }
				  else if (response.status === 'not_authorized') {
					alert("Login failed!");
				  } else {
					alert("Unknown error!");
				  }
				});	
		</script>
		<input type="button" value="Login" onclick="Login()" />
		<input type="button" value="Evento" onclick="Nome_evento()" />
		<div id="displayName" style="padding-top: 20px">You haven't logged in yet.</div>
		<div id="userName" style="padding-top: 20px">You haven't logged in yet.</div>
		<div id="userID" style="padding-top: 20px">You haven't logged in yet.</div>	
		<div id="userEmail" style="padding-top: 20px">You haven't logged in yet.</div>
		<script>
			function Login() {
			  alert("comecou login!");
			  FB.login(function (response) {
				if (response.authResponse) {
				  // some code here
					FB.api('/me', function (response) {
        document.getElementById("displayName").innerHTML = response.name;
        document.getElementById("userName").innerHTML = response.username;
        document.getElementById("userID").innerHTML = response.id;
        document.getElementById("userEmail").innerHTML = response.email;
      });
				} else {
				  alert("Login attempt failed!");
				}
			  }, { scope: 'email,user_photos,publish_actions' });

			}
		</script>
		<div id="evento" style="padding-top: 20px">Evento</div>
		<script type="text/javascript">
		 FB.api("/1718063768425398",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
		document.getElementById("evento").innerHTML = response.name;
      }
    });
		</script>
	</body>
</html>

--编辑这是face_init_js.js,FB功能(如登录)正在工作

window.fbAsyncInit = function () {
			  FB.init({
				appId: '*****************',
				status: true,
				cookie: true,
				xfbml: true,
				version    : 'v2.5'
			  });
			};

(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'));

2 编辑 -

<script type="text/javascript">

		window.fbAsyncInit = function () {
			  FB.init({
				appId: '505610319610868',
				status: true,
				cookie: true,
				xfbml: true,
				version    : 'v2.5'
			  });
			FB.api("/1718063768425398",
    function (response) {
      if (response && !response.error) {
        /* handle the result */
		document.getElementById("evento").innerHTML = response.name;
      }
    });
			};
		</script>

最佳答案

只有在加载并初始化JavaScript SDK后才能使用它:

window.fbAsyncInit = function() {
    //SDK loaded, initialize it
    FB.init({
        appId      : 'your-app-id',
        xfbml      : true,
        version    : 'v2.5'
    });

    //now you can use FB
};

链接:

如果这对您没有帮助,并且当您尝试使用 FB 时浏览器控制台中没有错误,请将 console.log 放在回调函数的开头。换句话说:调试您的代码。

关于javascript - 除非调用 onclick,否则脚本不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34643612/

相关文章:

javascript - Facebook 通过应用发布 swf

facebook - 检测用户是否拒绝了我的 Facebook 应用程序中的任何权限

facebook - Send-to-messenger 插件未显示

javascript - 如何等待可观察对象完成以返回值?

javascript - 使用 JavaScript 获取所选按钮的 ID

java - 回调无法解析为变量

PHP SDK 3.1.1 getUser() 有时返回 0

java - 获取 Facebook 好友个人资料详细信息

javascript - 将 mongoDB 文档数据存储为变量

javascript - SystemJS - ES6 模块加载器 - 导入中的层次结构过多