我有一个指向我的主页的链接,当鼠标越过它时会改变颜色。但是,当用户单击时,页面将刷新并且链接将返回旧颜色。我希望链接再次更改为新颜色,因为鼠标在那里,但鼠标停止时没有触发鼠标事件。然而,在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>
我要跟你说实话,这是你的情景
但是,当用户单击时,页面将刷新并且链接将返回旧颜色。
似乎更像是一个强制刷新页面的问题。你为什么要强迫刷新?
基于这个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.
但我会诚实地避免使用强制更新解决方案并提出其他建议