javascript - 每隔几毫秒在给定的 x-y 坐标上显示元素

标签 javascript jquery html mouseevent

我有一个函数,它从我的 SignalR 中心的另一个客户端接收 xy 坐标。每当 clientA 移动他的鼠标时,他的 xy 坐标 就会发送到 ClientB

我正在尝试在 clientB 屏幕上的 x-y 坐标处打印一个简单的 @。这可行,但唯一的问题是它非常慢(我认为是因为每次鼠标移动 1px 时都会调用该函数)。当我在 clientA 上移动鼠标几秒钟时,clientB 屏幕上打印的“@”落后了。

这与我编写的用于显示此 @ 的代码有什么关系吗?

hub.client.MouseMoved = function (x, y, id) {
        id = "@"; //for testing purposes
        var e = document.getElementById(id);
        
        if (!e) { //if e is not found, create e
            e = $('<div id="' + id + '">' + id + '</div>');
            e.css('position', 'absolute');
            console.dir(e);
            $(e).appendTo(document.body);
        }
        else {
            e = $(e);
        }
            e.css({ left: x + "px", top: y + "px" }); //set position of cursor to x y coordinate.
        }
    }

最佳答案

为了防止性能下降,您可以使用计时器:

var timer;

function executeMouseMoved(x, y, id){
    id = "@"; //for testing purposes
    var e = document.getElementById(id);
        
    if (!e) { //if e is not found, create e
        e = $('<div id="' + id + '">' + id + '</div>');
        e.css('position', 'absolute');
        console.dir(e);
        $(e).appendTo(document.body);
    }
    else {
        e = $(e);
    }
    e.css({ left: x + "px", top: y + "px" }); //set position of cursor to x y coordinate.
}

hub.client.MouseMoved = function (x, y, id) {
    clearInterval(timer);
    timer = setTimeout(function(){executeMouseMoved(x,y,id);}, 50); //50ms
}

希望对您有所帮助。

JsFiddle

关于javascript - 每隔几毫秒在给定的 x-y 坐标上显示元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34288755/

相关文章:

javascript - 从模态输入字段中获取文本并将其放入表格中

javascript - Passport 认证失败导致重定向循环

html - 用于 CSS 编辑的 Chrome 控制台切换设备

html - 如何使用 Bootstrap 制作带有背景图像的 div 全屏

python - Django 1.8 不使用我的自定义登录页面

javascript - 文件上传控件响应式(Reactive)表单

javascript - 错误处理并将日志保存到文本文件

javascript - 禁用 HTML 页面上所有表单的提交功能

javascript - 元素 <td> 内的自定义占位符未显示

php - 简单的颜色变化