2

因此,我在这里查看了大多数 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 开发建议,因为应用程序、页面和选项卡的行为似乎完全不同,但似乎他们都应该做同样的事情我?是否有任何统一的方式来开发所有这三件事,或者我错过了什么?

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

4

3 回答 3

0

我认为应该是:

obj.addEventListener('change',my_func);

(而不是onchange

于 2010-11-02T20:28:33.990 回答
0

直接来自Facebook 文档

第三个参数[to addEventListener],boolean useCapture 是必需的(它没有默认值)

这意味着您应该拥有:

obj.addEventListener('change', my_func, false);
于 2010-11-02T20:55:13.937 回答
0

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

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

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

于 2010-11-29T12:11:23.203 回答