我创建了一个 JS 函数,当它包含标准 HTML 链接标记的“onclick”操作时执行良好,如下所示:
<a href="#" onclick="return fb_CheckPermission('publish_stream');">test</a>
但是,我真正想使用此功能的地方是在表单的“onsubmit”操作上,但是当我按如下方式包含它时,该功能似乎不再执行:
<form action="page.pl" id="disable-submit" name="status-form" method="POST" onsubmit="return fb_CheckPermission('publish_stream');">
'fb_CheckPermission()' JS 函数基本上所做的是使用 Facebook Connect 来检查以确保用户已授予我们特定权限,如果没有,它会告诉 Facebook Connect 提示用户授予权限。这是JS函数的代码:
1. function fb_checkPermission(permission) {
2. FB.ensureInit(function() {
3. FB.Facebook.apiClient.users_hasAppPermission(permission, function (hasPermissions) {
4. if(!hasPermissions){
5. FB.Connect.showPermissionDialog(permission,function (status){
6. if(!status) {
7. if(permission == 'offline_access') {
8. // save session
9. }
10. }
11. });
12. }
13. });
14. });
15.}
这段代码的作用如下:
Line 2: Make sure Facebook Connect JS library is loaded
Line 3: Checks to see if the current Facebook Connect user has granted a specific permission
Line 5: If the permission hasn't been granted then prompt the user with the permission dialog
Line 7: In the case of the 'offline_access' permission save the session key once granted
我试图实现的用户体验是,当用户提交表单时,我将检查他们是否已授予特定权限,如果未在提交表单之前提示他们提供权限。如果用户已经授予权限,则表单应该提交。对于那些被提示表单的用户,他们要么选择授予权限,要么拒绝我认为 fb_checkPermission() JS 函数现在正在正确处理的请求。我不确定在提交表单时是否存在某种 JavaScript 问题。
正如我所提到的,这个 JS 函数作为 onclick 动作完美地工作,但作为 onsubmit 动作失败,所以我很确定这与 JavaScript 如何处理 onsubmit 动作有关。
我被困住了,所以我非常感谢您在弄清楚如何更改 JS 函数以产生我想要的用户体验方面的帮助。在此先感谢您的帮助!