要素がホバーされているかどうかを確認する1つの方法は、css:hover
で未使用のプロパティを設定し、そのプロパティがjavascriptに存在するかどうかを確認することです。dom-native hover プロパティを使用していないため、問題の適切な解決策ではありませんが、私が考えることができる最も近い、最も最小限の解決策です。
<html>
<head>
<style type="text/css">
#hover_el
{
border: 0px solid blue;
height: 100px;
width: 100px;
background-color: blue;
}
#hover_el:hover
{
border: 0px dashed blue;
}
</style>
<script type='text/javascript'>
window.onload = function() {check_for_hover()};
function check_for_hover() {
var hover_element = document.getElementById('hover_el');
var hover_status = (getStyle(hover_element, 'border-style') === 'dashed') ? true : false;
document.getElementById('display').innerHTML = 'you are' + (hover_status ? '' : ' not') + ' hovering';
setTimeout(check_for_hover, 1000);
};
function getStyle(oElm, strCssRule) {
var strValue = "";
if(document.defaultView && document.defaultView.getComputedStyle) {
strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
}
else if(oElm.currentStyle) {
strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1) {
return p1.toUpperCase();
});
strValue = oElm.currentStyle[strCssRule];
}
return strValue;
};
</script>
</head>
<body>
<div id='hover_el'>hover here</div>
<div id='display'></div>
</body>
</html>
( JavaScript get StylesgetStyle
のおかげで機能します)
誰かがフラグとして使用するより良い css プロパティを考えられる場合は、solid/dashed
私に知らせてください。プロパティは、めったに使用されず、継承できないものであることが望ましいです。