Javascript 拖放后丢失鼠标悬停事件
我有一个页面,其中有可滚动的字符串div和一个由几个div组成的单独网格 通常,当我翻滚时,字符串上的鼠标悬停会突出显示它们 在我将一个字符串从上一组div拖动到其中一个grid div中后,鼠标悬停高亮显示将不再工作,直到我再次单击鼠标(无论在何处)。同一页上单独div中的按钮在鼠标上方也不会高亮显示 我可以单击任何div(包括drop目标)以恢复鼠标悬停突出显示,因此,单击似乎可以重新启动鼠标悬停事件 这只发生在一滴之后。我尝试生成一个点击,并将ev.target设置为0 ondragend(我通常不会听),但仍然没有骰子(也尝试了聚焦,但我认为这不是问题) 如果mouseover事件在拖放后没有触发,或者其他元素看不到它,那么如何在不手动单击鼠标的情况下将其取回 只是想一想:我做的测试显示,鼠标在一次跌落后没有发生意外,我也没有点击鼠标的后记,所以如果我在js中收听事件,我可以做文本突出显示,它会工作,所以有一个解决方法 但是,我更改了css选择器中的文本颜色(schedtxt类是动态创建的div,在strcont div中滚动),为什么我需要在拖放后单击鼠标以获得浏览器(在我的示例中是Chromium/V8)来处理css规则Javascript 拖放后丢失鼠标悬停事件,javascript,Javascript,我有一个页面,其中有可滚动的字符串div和一个由几个div组成的单独网格 通常,当我翻滚时,字符串上的鼠标悬停会突出显示它们 在我将一个字符串从上一组div拖动到其中一个grid div中后,鼠标悬停高亮显示将不再工作,直到我再次单击鼠标(无论在何处)。同一页上单独div中的按钮在鼠标上方也不会高亮显示 我可以单击任何div(包括drop目标)以恢复鼠标悬停突出显示,因此,单击似乎可以重新启动鼠标悬停事件 这只发生在一滴之后。我尝试生成一个点击,并将ev.target设置为0 ondragend
.strcont{
width: 96%;
height: 115px;
overflow-x: hidden;
overflow-y: auto;
cursor: default;
}
.schedtxt{
width: 100%;
border: 1px solid transparent;
font-family:arial, sans-serif;
font-size: 11px;
font-weight:600;
color: #aaaaaa;
padding:0px 0px 0px 5px;
overflow: hidden;
white-space:nowrap;
cursor: default;
}
.schedtxt:hover{
color:#ececec;
}
编辑:
修改上面的测试函数可以像预期的那样工作并修复问题,但是仍然有一个问题,那就是为什么当css规则应该处理它时,我甚至需要这样做
//workaround for mouseover highlight after drop problem
/////////////////////////////////////////////////////////////
function logMouseMove(e)
{
var evt=e.type;
var idt=(e.target||e.srcElement).id;
if((idt.indexOf('sc')>-1)||(idt.indexOf('playon')>-1)||(idt.indexOf('scsav')>-1))
{
var el=document.getElementById(idt);
if(evt=='mouseover') el.style.color='#ededed';
if(evt=='mouseout') el.style.color='#aaaaaa';
}
return false;
}
你的代码在哪里?你要全部4356行吗?如果没有css、nwjs和节点模块,也不会有什么好处。我不能只划分出我正在工作的div,然后仍然让它运行,那么仅仅是D&D的东西怎么样?这就是它正在失去它的地方。4356行比零行更能提供信息。你如何期望你的问题得到答案?一个单独的例子是理想的,是的,你可以把它刻出来。这里的每一个问题都包括这一点。那么,你的代码在哪里?你想要全部4356行吗?如果没有css、nwjs和节点模块,也不会有什么好处。我不能只划分出我正在工作的div,然后仍然让它运行,那么仅仅是D&D的东西怎么样?这就是它正在失去它的地方。4356行比零行更能提供信息。你如何期望你的问题得到答案?一个单独的例子是理想的,是的,你可以把它刻出来。这里的每一个问题都包括这一点。
wjs version: 0.12.3
test3.html:4097 streams-mf.txt
test3.html:2823 canplay
test3.html:2827 play
////// initial mouseover on strings
test3.html:4124 mouseover target=strcont move
test3.html:4124 mouseover target=sc7 move
test3.html:4124 mouseover target=sc6 move
///// dragover on cell-4 div
test3.html:4124 mouseover target=4 move
///// drop on cell-3 div
test3.html:4124 mouseover target=3 move
///// dragend - mouseover back to strings div
test3.html:4124 mouseover target= move
test3.html:4124 mouseover target=strbut move
///// mouseover events fired on strings divs
///// but no highlighte until clicked
test3.html:4124 mouseover target=sc7 move
test3.html:4124 mouseover target=sc6 move
test3.html:4124 mouseover target=sc5 move
test3.html:4124 mouseover target=sc4 move
test3.html:4124 mouseover target=sc3 move
test3.html:4124 mouseover target=sc2 move
test3.html:4124 mouseover target=sc1 move
.strcont{
width: 96%;
height: 115px;
overflow-x: hidden;
overflow-y: auto;
cursor: default;
}
.schedtxt{
width: 100%;
border: 1px solid transparent;
font-family:arial, sans-serif;
font-size: 11px;
font-weight:600;
color: #aaaaaa;
padding:0px 0px 0px 5px;
overflow: hidden;
white-space:nowrap;
cursor: default;
}
.schedtxt:hover{
color:#ececec;
}
//workaround for mouseover highlight after drop problem
/////////////////////////////////////////////////////////////
function logMouseMove(e)
{
var evt=e.type;
var idt=(e.target||e.srcElement).id;
if((idt.indexOf('sc')>-1)||(idt.indexOf('playon')>-1)||(idt.indexOf('scsav')>-1))
{
var el=document.getElementById(idt);
if(evt=='mouseover') el.style.color='#ededed';
if(evt=='mouseout') el.style.color='#aaaaaa';
}
return false;
}