所以我在这里查看了大部分的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开发建议,因为应用程序,页面和标签看起来都表现得彼此完全不同,但似乎它们都应该做同样的事情我?是否有任何统一的方式来发展所有这三件事,或者我错过了什么?
提前感谢,以及过去的帮助!
答案 0 :(得分:0)
我认为应该是:
obj.addEventListener('change',my_func);
(而不是onchange
)
答案 1 :(得分:0)
第三个参数[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事件中触发。