Facebook JS(FBJS)事件监听器

时间:2010-11-02 20:24:39

标签: javascript facebook fbjs

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

无论如何,此时我遇到了FBJS。它对大多数事情都“足够好”,但由于某种原因,我无法通过添加一个监听器(根据FBJS文档)将一个事件注册到一个对象(一个特别感兴趣的选择框)。我可以直接将它添加到html对象并使其工作,但这是不可取的,我真的想知道我认为正确的方法,它涉及逻辑和显示的分离。

我想要发生的事情:点击选择框,进行选择,在空div中显示选择的文本(稍后在这里添加Ajax但一步一步)

代码:

<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开发建议,因为应用程序,页面和标签看起来都表现得彼此完全不同,但似乎它们都应该做同样的事情我?是否有任何统一的方式来发展所有这三件事,或者我错过了什么?

提前感谢,以及过去的帮助!

3 个答案:

答案 0 :(得分:0)

我认为应该是:

obj.addEventListener('change',my_func);

(而不是onchange

答案 1 :(得分:0)

直接来自Facebook documentation

第三个参数[to addEventListener],需要布尔值useCapture(它没有默认值)

这意味着你应该:

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

答案 2 :(得分:0)

使用以下html和.addEventListener()附带的事件开始工作。这似乎是无证的“特征”。

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

这也使事件能够在用户第一次更改select值时触发。否则它只会在第二次onchange事件中触发。