Javascript Firefox仅显示一次标题属性

Javascript Firefox仅显示一次标题属性,javascript,firefox,Javascript,Firefox,当你在画布上移动鼠标时,我想让它显示坐标 当您更改鼠标位置(不移出画布)时,我希望它显示新的坐标。稍微耽搁一下就好了 我使用的是工具提示,但firefox中的代码不起作用:标题仅在您进入画布时显示,然后您必须移出并重新进入画布才能再次显示 我怎样才能解决这个问题 document.getElementById('mycanvas').addEventListener( 'mousemove', function(event) { mycanvas.title=event.

当你在画布上移动鼠标时,我想让它显示坐标

当您更改鼠标位置(不移出画布)时,我希望它显示新的坐标。稍微耽搁一下就好了

我使用的是工具提示,但firefox中的代码不起作用:标题仅在您进入画布时显示,然后您必须移出并重新进入画布才能再次显示

我怎样才能解决这个问题

document.getElementById('mycanvas').addEventListener(
    'mousemove', function(event) {
        mycanvas.title=event.layerX;
    });

您无法控制浏览器选择显示元素标题的方式。是的,但是延迟显示和更新频率不在您的控制范围之内

下面是一个跟踪鼠标位置并在弹出窗口中显示坐标的示例,您可以完全控制该弹出窗口(显示延迟、偏移、样式等)。将鼠标移到画布上,在给定位置等待一秒钟,让弹出窗口出现,移动到其他位置,等等

值得注意的细节:

  • 在每个
    mousemove
    事件中使用
    setTimeout
    ,并
    clearTimeout
    清除前一个事件
  • 使用jQuery“规范化”事件,使用
    pageX/pageY
    $.offset()
    ,将工具提示本身放置在适当的坐标处(考虑到窗口滚动),并使其显示相对于画布的坐标。(我将画布放在一个有20px边距的div中以显示这一点)
(我最初想不用jQuery,但浏览器对鼠标事件属性的怪癖让我放弃了这个想法,在多次编辑之后,我决定使用jQuery来实现一些功能)

var canvas=document.getElementById('canvas');
var context=canvas.getContext('2d');
var background=document.getElementById('background');
if(background.complete)context.drawImage(background,0,0);
else background.onload=function(){context.drawImage(background,0,0);}
var caption=document.getElementById('caption');
var pos={};
var-timerID;
$(画布).mousemove(函数(e){
pos={
x:e.pageX-$(this).offset()左,
y:e.pageY-$(this).offset().top,
标题X:e.pageX,
字幕:e.pageY,
};
caption.setAttribute('style','display:none');
if(timerID){clearTimeout(timerID);}
timerID=设置超时(显示位置,500);
});
canvas.addEventListener('mouseleave',函数(事件){
caption.setAttribute('style','display:none');
if(timerID){clearTimeout(timerID);}
});
函数showPosition(){
caption.setAttribute('style','display:inline;left:'+(pos.captionX+8)+“px”;top:+(pos.captionY+8)+“px;”);
caption.innerHTML=“(“+pos.x+”,“+pos.y+””);
}
#背景{可见性:隐藏;}
#标题{
显示:无;
位置:绝对位置;
文本对齐:居中;
保证金:3倍;
宽度:120px;
高度:24px;
背景:黑色;
颜色:白色;
}


我相信
mouseover
事件更适合您的用例:不,刚才mousemove与mouseover一样工作,这就是问题:)(
mousemove
是要跟踪的正确事件)。我认为您无法控制浏览器如何显示画布的标题。这需要是标题吗?您可以在任何地方显示坐标。例如你想在鼠标后的弹出框中显示吗?是的,某种工具提示就是这个主意。谢谢。您知道原始(集成浏览器)工具提示的默认样式吗?您无法访问该信息,它可能甚至不是HTML/CSS,它取决于浏览器,它甚至可能使用操作系统的本机小部件作为工具提示。。。