2010-11-02 79 views
2

所以我在这里查看了大部分的facebook问题,它绝对证实了我的想法。 Facebook的发展可能是我曾经使用过的最糟糕的一些。我现在会避免我的咆哮,但作为我来自哪里的说明:尝试php sdk,开箱即用,体面地工作,发现我需要将功能放在页面选项卡上,无法使用iframe页面标签,必须使用FBML(他们在两个月内退休,但我不能开始测试iframe方法)Facebook JS(FBJS)事件监听器

无论如何,我遇到FBJS在这一点上。它适用于大多数情况,但由于某种原因,我无法通过添加监听器(按照FBJS文档)将事件注册到对象(特别感兴趣的选择框)。我可以直接将它添加到html对象并使其工作,但这不是可取的,我真的很想知道我认为是什么正确的方式来做到这一点,这涉及逻辑和显示的分离。

我想什么发生:点击选择框,进行选择,在一个空div显示选择的文本(后来在这里的时间加入阿贾克斯,但一个步骤)

代码:

<script> 
    var obj = document.getElementById('select-id'); 
    obj.addEventListener('onchange',my_func); 
    function my_func(evt){ 
     var inner = document.getElementById('div-id'); 
     inner.setTextValue('hey');  // for testing purposes 
    } 
</script> 

当我对选择框进行更改时,上述代码不起任何作用。但是,这种行为与计划:

<select name="find_state" id="find_state" onchange="my_func();"> 

我会不情愿地使用这种方法,因为我的发展,但更喜欢知道我可能是做错了,或者如果任何人有这个问题?如果有人对此事有任何意见,我很想知道某种形式的Facebook开发建议,因为应用程序,页面和标签看起来与其他人完全不同,但似乎他们都应该做同样的事情我?是否有任何统一的方法来开发这三个方面,或者我错过了什么?

在此先感谢,以及过去的帮助!

回答

0

我认为它应该是:(代替onchange

obj.addEventListener('change',my_func); 

+0

感谢您的快速回复!我曾尝试过,只是再次尝试,没有运气。我也尝试过测试其他对象的'点击','onclick','onClick'等。动作是否减去“on”正确的语法? – 2bsharpdev 2010-11-02 20:45:36

+0

@ 2bsharpdev看起来像不需要“on”所需:http://developers.facebook。com/docs/fbjs#events – serg 2010-11-02 20:54:15

0

直从Facebook documentation

第三个参数[对addEventListener],需要布尔将useCapture(它不有一个默认值)

这意味着你应该有:

obj.addEventListener('change', my_func, false); 
+0

是的,我已经记得看到了这一点,我尝试了假和真(以防万一),并没有效果。还想指出他们的例子不使用这第三个参数?也许我在这里完全是白痴,你可以在FBML应用程序选项卡中使用FBJS(我猜这就是你所说的?) – 2bsharpdev 2010-11-03 03:57:01

0

使用以下html和您的事件附加.addEventListener()开始工作。这似乎是无证的“功能”。

<select name="find_state" id="find_state" onmousedown="return true;"> 

这也可以让事件第一次触发用户更改select的值。否则它只会在第二个onchange事件中触发。