Web アプリケーションでチャット システムを作成しました。
メッセージ付きの入力フィールドを持つ基本的なチャットです。
私はmessages_sectionをラップしただけsetInterval
で、部分的に1秒ごとにロードするために使用しています。
ただし、ここで奇妙な動作を見つけました。
setInterval
入力フィールドに何かを入力していると、入力された単語が読み込まれるたびに何らかの形で入力されます。
現在、これは FireFox でのブラウジングにのみ影響しているようです:(
setInterval
入力フィールドが設定されていない限り、入力フィールドには影響しないと思っていました
これらは私のコードです。原因と対処法が知りたい
jQuery
<script type="text/javascript">
//<![CDATA[
jQuery(document).ready(function () {
refreshPartial();
setInterval(refreshPartial, 1000)
});
function refreshPartial() {
$.ajax({
url: "/communities/setinterval_part?page=",
type: "GET",
dataType: "script",
});
}
//]]>
</script>
HTML
<form accept-charset="UTF-8" action="/communities/new_comments" class="new_comment" data-remote="true" id="new_comment" method="post">
<input class="chat" id="input" name="comment[body]" type="text" />
<button type="submit" class="btn">submit</button>
<form>
<span id="messages_section">
here comes messages!
</span>
setinterval_part.js.erb
$('#messages_section').html("<%= j(render(:partial => 'communities/comment')) %>");
<% if @post %>$('#body_input').val('');<% end %>
community_controller.rb
def setinterval_part
@comments = @community.comment_threads.order("updated_at DESC").page(params[:page]).per(@number_of_comments_to_display)
@comment = @community.comment_threads.build
respond_to do |format|
format.js
end
end