Javascript 当用户要写东西时,如何防止重新加载?

Javascript 当用户要写东西时,如何防止重新加载?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我的网站有一个简单的信息系统,用户写信息,收件人回复,这就是聊天 我使用HTML保持页面刷新,直到用户收到新消息 <meta http-equiv="refresh" content="15;URL=chat_5999468.php"/> 它每15秒刷新一次页面,因此如果有新消息入侵,它会弹出但即使收件人正在键入,它也会重新加载页面 当用户在jQuery中键入消息时,如何防止重新加载 编辑:页面HTML(与此类似): Untitled#b{color:#000;}聊天输入[ty

我的网站有一个简单的信息系统,用户写信息,收件人回复,这就是聊天

我使用HTML保持页面刷新,直到用户收到新消息

<meta http-equiv="refresh" content="15;URL=chat_5999468.php"/>

它每15秒刷新一次页面,因此如果有新消息入侵,它会弹出即使收件人正在键入,它也会重新加载页面

当用户在jQuery中键入消息时,如何防止重新加载

编辑:页面HTML(与此类似):

Untitled#b{color:#000;}聊天输入[type=“text”]{宽度:65%;高度:30px;边框:1px实心#999999;边框右上半径:10px;边框左下半径:15px;填充:10px;颜色:#0084ff;左边距:5px;边距顶部:10px;边距底部:10px;}输入:焦点,按钮:焦点,输入,按钮{轮廓:无!重要提示;}.chat输入[type=“submit”]{color:#000;背景:url(https://i.stack.imgur.com/NAjD2.jpg)无重复;高度:47px;宽度:47px;边框:无;}.chat77 ul{列表样式:无;边距:0;填充:0;}.chat77 ul li{显示:内联块;清除:两个;填充:8px;边框半径:30px;页边距底部:2px;字体系列:Helvetica,Arial,无衬线;}.message-2{背景:eee;float:left;}.message me{float:right;背景:0084ff;颜色:#fff;}.message 2+。message me{边框底部右半径:5px;}.message 2+。message me{{border右上半径:5px;border右下半径:5px;}。消息我:类型{border右下半径:30px;}的最后一个联机标记扎克伯格|
var book=“me:3”;if(book=”me:3”){document.write(“
  • 3
  • ”);否则{document.write(“
  • ”);}var book=“Mark Zuckerberg==“Me:2”{document.write(“
  • 2
  • ”);else{document.write(
  • ”);var book=“Me:Message1”;if(book==“Me:Message1”){document.write(
  • Message1
  • ”);else{document.write(
  • );ul>

    我所能想到的就是
    jQuery.ajax()

    如果你想为你的
    meta
    标签找一个替代品,这个答案是为你准备的。 您可以获取更新站点的内容,搜索特定的
    div
    或类似内容,并检查是否有新条目


    这只是一个例子你如何做到这一点

    首先,创建一个循环函数:

    setInterval(function(){
    }, 15000); // The loop function will check every 15 seconds
    
    然后,创建
    ajax()
    调用

    $.ajax({
        url: 'YOUR URL HERE',
        type: 'GET',
        success: function(data) {
            var check = $(data).find('#chat');
            // Here you get the `div` -> `#chat`
            // Now you could check if there is something new
        }
    });
    
    我不知道你的聊天是如何编码的,但我想可能有时间戳。只要检查一下是否有一个时间戳比你打开的网站更新的
    div
    (?):

    var compareMe = $('#chat').find('.entry span').last().attr('class');
    var compareOther = $(data).find('.entry span').last().attr('class');
    
    在我的例子中,有一个
    div
    id=“chat”
    ,这有一个
    div
    ,它有一个
    class=“entry
    ,它有一个
    span
    class=“1504155239”
    (这是消息的时间戳)

    下面是一个例子:

    var compareMe=$('#chat').find('.entry span').last().attr('class');
    console.log(compareMe);
    
    1504155239: 
    你好!首先!
    1504155254: 
    嘿!啊,我是第二?
    
    暂停刷新只会导致更多问题。更好的办法是根本不使用刷新/轮询模式。研究WebSocket或服务器端事件。但我目前正在使用它。现在更改整个系统对我来说不是个好主意!如果你的用户已经在抱怨,那么你要做的就是这样做不会更好use@Rory为了更好,我问了这个问题!完全同意第一条评论(查看您的整个设计),因此我不会将其作为答案发布,但要停止元刷新,请使用
    window.stop()
    。尤其是我的网站针对功能手机进行了优化!但是我无法继续使用时间戳。用户肯定可以看到他收到了该消息,但形式如下:-示例:-2017年8月31日01:03PM。不幸的是,我没有任何类似的时间戳功能!只需使用不同的选择器?您可以用其他选择器解释吗?在我的代码中,我检查
    find('.entry span').last().attr('class'));
    。只需将此更改为您想要的
    id/class
    div/span/element/…
    。糟糕的是,我不知道您的“聊天”是什么样子。我已经包括了DOM!代码可能需要过滤。这很难阅读!
    var compareMe = $('#chat').find('.entry span').last().attr('class');
    var compareOther = $(data).find('.entry span').last().attr('class');