上段代码在ios中可以吗
时间: 2023-11-02 11:04:59 浏览: 36
在 iOS 中,禁用默认右键菜单的方法与在桌面浏览器中略有不同。您可以使用 `touchstart` 事件而不是 `contextmenu` 事件来禁用默认右键菜单行为。以下是修改后的代码:
```javascript
// 禁用默认右键菜单
document.addEventListener('touchstart', event => event.preventDefault());
// 创建自定义右键菜单
const contextMenu = document.createElement('div');
contextMenu.className = 'context-menu';
contextMenu.innerHTML = `
<ul>
<li>菜单项 1</li>
<li>菜单项 2</li>
<li>菜单项 3</li>
</ul>
`;
// 在长按时显示自定义菜单
let timer;
document.addEventListener('touchstart', event => {
timer = setTimeout(() => {
contextMenu.style.top = event.touches[0].clientY + 'px';
contextMenu.style.left = event.touches[0].clientX + 'px';
document.body.appendChild(contextMenu);
}, 500);
});
// 在松开手指时隐藏自定义菜单
document.addEventListener('touchend', event => {
clearTimeout(timer);
if (!contextMenu.contains(event.target)) {
contextMenu.remove();
}
});
```
在 iOS 中,长按可以触发右键菜单,因此我们使用 `touchstart` 事件来检测长按操作。在代码中,我们设置了一个 500 毫秒的定时器,如果用户在 500 毫秒内松开手指,则不会触发自定义右键菜单。如果用户长按超过 500 毫秒,则会触发自定义右键菜单。当用户松开手指时,我们使用 `touchend` 事件来隐藏自定义菜单。