2016-03-15 119 views
3

我想創建一個非常簡單的聊天系統,自動刷新並刷新用戶提交的新聊天消息。Javascript調用函數在函數不工作

我現在有兩個功能 - 一個用於提交新的消息,清除表單並刷新聊天(使用下一個函數)叫clearchat()

function clearchat() { 
    var frm = document.getElementById('chatform'); 
    document.getElementById('fullmessage').value = document.getElementById('chatmsg').value; 
    frm.submit(); // form is being submitted to a hidden iframe. 
    frm.reset(); 
    refreshchat(); 
} 

,然後其他的是刷新聊天應該被稱爲當clearchat()運行和使用的時間間隔也被稱爲每3秒:

function refreshchat() { 
    $('#qcwindow').load(document.URL + ' #qctext'); 
    $('#chatwindow').load(document.URL + ' #chattext'); 
    var chatwindow = document.getElementById('chatwindow'); 
    var difference = chatwindow.scrollHeight - chatwindow.scrollTop; 
    if(difference < 750) { 
     chatwindow.scrollTop = chatwindow.scrollHeight; 
    } 
} 

此功能加載新的聊天信息到DIV,然後保持它滾動到div的底部,除非用戶有手動滾動離開div的底部。

這兩個函數都單獨工作。我遇到的問題是,當用戶提交新消息時,它確實提交表單並清除表單,但它確實不是刷新聊天。聊天仍然會自動刷新每3秒,但。但是我希望用戶的新消息能夠立即顯示出來。

我無法弄清楚爲什麼clearchat()函數中的refreshchat()函數沒有被調用。

任何幫助,將不勝感激。謝謝。

UPDATE:

我已經添加console_log("refrehsed")refreshchat()功能,它被添加到日誌中,每次均通過擊球手動,也進入自動刷新,但僅股利居然就自動刷新更新。

+0

如果從程序中刪除自動3秒刷新,會發生什麼情況?它是否正確刷新(當然,只有當你提交消息時)? – Katana314

+0

問題是,ajax並沒有立即完成,如果你想讓用戶發送的消息立即彈出,你可能必須手動修改聊天框的html內容以包含消息,以便它看起來像它已經出來即刻。 – chris97ong

+0

@ Katana314 - 嗯..當我刪除自動3秒的時間間隔,它會自動加載信息約75%的時間,但不是每一次。 – Jetteh22

回答

2

當您將表單提交給iframe時,您應等待帖子完成後再更新UI。您可以通過監聽表單所定位的iframe的加載事件來知道表單已完成提交。

+0

這工作完美。爲調用'refreshchat()'函數的iframe加載添加了一個事件監聽器。現在一切正常。 – Jetteh22