如何在不加动鼠标的情况下加载页面时触发鼠标事件?

问题描述 投票:0回答:1

我有一个指向我的主页的链接,当鼠标越过它时会改变颜色。但是,当用户单击时,页面将刷新并且链接将返回旧颜色。我希望链接再次更改为新颜色,因为鼠标在那里,但鼠标停止时没有触发鼠标事件。然而,在JSFiddle中,它可以工作(将鼠标放在文本上并用F5刷新所有页面),所以我想必须有一种方法。我不想使用css:hover因为颜色经常更改,我发现在javascript中更改css值是一种噩梦。或者不是吗?另外,请不要使用JQuery。

function colorize() {
	this.style.color = '#C83';
}
function load() {
	var p1 = document.getElementById('p1');
  p1.addEventListener('mouseover',colorize);
}
p {
  font-size: 2em;
  background-color: #385;
}
<body onload='load()'>
  <p id='p1'>Some big text</p>
</body>
javascript html css mouseevent
1个回答
0
投票

我要跟你说实话,这是你的情景

但是,当用户单击时,页面将刷新并且链接将返回旧颜色。

似乎更像是一个强制刷新页面的问题。你为什么要强迫刷新?

基于这个thread

你不能。这不是一个值得信赖的事件。

由用户代理生成的事件,或者作为用户交互的结果,或者作为DOM更改的直接结果,由用户代理信任的事件具有通过DocumentEvent.createEvent脚本生成的事件所不具有的权限(“Event”)方法,使用Event.initEvent()方法修改,或通过EventTarget.dispatchEvent()方法调度。受信任事件的isTrusted属性值为true,而不受信任事件的isTrusted属性值为false。

大多数不受信任的事件不应触发默认操作,但click或DOMActivate事件除外。

您必须手动添加一个类并在mouseover / mouseout事件上添加/删除它

没有标准/值得提及的本地方式来做到这一点。

刷新时,你必须以某种方式保留状态。传递查询字符串?isMouseOver=true并在刷新后解析它应该就足够了。只需在验证查询字符串后执行相同的鼠标悬停功能,无需以编程方式触发mouseover事件。

或者你可以使用jQuery,which has trigger-able mouse events.


但我会诚实地避免使用强制更新解决方案并提出其他建议

© www.soinside.com 2019 - 2024. All rights reserved.