2010-11-02 77 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事件中觸發。