gpt4 book ai didi

javascript - `setInterval` 是否会阻止用户输入?

转载 作者:行者123 更新时间:2023-12-02 19:03:01 25 4
gpt4 key购买 nike

我在我的网络应用程序中制作了聊天系统。
这是带有消息的输入字段的基本聊天。

我只包装了 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 %>

communities_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

最佳答案

首先,我建议您在这种情况下不要使用 setInterval。如果您的服务器需要 1 秒以上才能响应客户端怎么办?我认为您可以直接从 setinterval_part.js.erb 运行 refreshPartial() 函数。

因此您需要对 View 中的 JS 部分进行以下更改:

jQuery(document).ready(function () {
refreshPartial();
});

function refreshPartial() {
$.ajax({
url: "/communities/setinterval_part?page=",
type: "GET",
dataType: "script",
});
}

将此设置为setinterval_part.js.erb:

$('#messages_section').html("<%= j(render(:partial => 'communities/comment')) %>");
<% if @post %>$('#body_input').val('');<% end %>
<% timeout_ms = 1000 %>
<% # some code that can determine current load of your server and increase timeout_ms %>
setTimeout(refreshPartial, <%= timeout_ms %>);

关于javascript - `setInterval` 是否会阻止用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14599369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com