为什么模糊和聚焦在 Safari 上不起作用?
Why blur and focus doesn't work on Safari?
我有这样一个简单的按钮:
<button class="emoji-button-container" onblur="APP.hideEmojiContainer()" onclick="APP.toggleEmojiContainer()">
在 Chrome 上,两个事件都完美运行。
在 Safari 上,onclick 事件可以正常工作,但不会触发 onblur 事件。 element.blur() 函数也不会触发 onblur 事件。
我需要它在 Safari 上工作,就像在 Chrome 上一样,那我该怎么办?这里有什么问题?
Safari 似乎没有将按钮元素聚焦在点击上。因此,根据 definition,onblur 属性会在元素失去焦点时触发。元素未聚焦 => onblur 未触发。
其中一种解决方案可以在点击后手动应用 button.focus()
。
另一个是在 document
上附加 click
事件作为 here
在 Safari 上,按钮可能不会在点击时聚焦(并且因为它们没有聚焦,所以不会触发模糊)
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus
您可以使用 javascript 聚焦按钮
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
function clickFunc(event) {
console.log(event, 'click');
event.target.focus();// Add me
};
function blurFunc(event) {
console.log(event, 'blur');
};
</script>
</head>
<body>
<button class="emoji-button-container" onblur="blurFunc(event)" onclick="clickFunc(event)"></button>
</body>
</html>
我有这样一个简单的按钮:
<button class="emoji-button-container" onblur="APP.hideEmojiContainer()" onclick="APP.toggleEmojiContainer()">
在 Chrome 上,两个事件都完美运行。
在 Safari 上,onclick 事件可以正常工作,但不会触发 onblur 事件。 element.blur() 函数也不会触发 onblur 事件。 我需要它在 Safari 上工作,就像在 Chrome 上一样,那我该怎么办?这里有什么问题?
Safari 似乎没有将按钮元素聚焦在点击上。因此,根据 definition,onblur 属性会在元素失去焦点时触发。元素未聚焦 => onblur 未触发。
其中一种解决方案可以在点击后手动应用 button.focus()
。
另一个是在 document
上附加 click
事件作为 here
在 Safari 上,按钮可能不会在点击时聚焦(并且因为它们没有聚焦,所以不会触发模糊)
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus
您可以使用 javascript 聚焦按钮
<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript">
function clickFunc(event) {
console.log(event, 'click');
event.target.focus();// Add me
};
function blurFunc(event) {
console.log(event, 'blur');
};
</script>
</head>
<body>
<button class="emoji-button-container" onblur="blurFunc(event)" onclick="clickFunc(event)"></button>
</body>
</html>