- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的移动 View 触发了一个 ontouchstart
事件,它链接到这个:
function mobileLinksShow() {
document.querySelector('.mobile-head-bar-links').classList.toggle('mobile-head-bar-links-transition');
}
在我的设备 (iPhone 5) 上,当我点击按钮时,它会切换两次,因此它先拉伸(stretch)然后收缩。这是因为 onclick 和 ontouchstart 同时触发。删除 onclick 解决了移动上的问题,但现在桌面浏览器显然不起作用,有没有办法抑制移动上的 onclick?
HTML:
<span class='mobile-head-bar-left' ontouchstart='mobileLinksShow()' onclick='mobileLinksShow()' ><i class="fa fa-bars"></i></span>
CSS:
.mobile-head-bar-links {
height: 0;
overflow: hidden;
background-color: #F76845;
transition: .5s ease;
-webkit-transition: .5s ease;
}
.mobile-head-bar-links-transition {
height: 7em;
}
注意。我不想使用 jQuery。
最佳答案
通过测试浏览器类型并相应地删除 onclick 找到了解决方法:
function removeMobileOnclick() {
if(isMobile()) {
document.querySelector('.mobile-head-bar-left').onclick = '';
}
}
function isMobile() {
if (navigator.userAgent.match(/Android/i)
|| navigator.userAgent.match(/iPhone/i)
|| navigator.userAgent.match(/iPad/i)
|| navigator.userAgent.match(/iPod/i)
|| navigator.userAgent.match(/BlackBerry/i)
|| navigator.userAgent.match(/Windows Phone/i)
|| navigator.userAgent.match(/Opera Mini/i)
|| navigator.userAgent.match(/IEMobile/i)
) {
return true;
}
}
window.addEventListener('load', removeMobileOnclick);
这样你可以让 onclick
和 ontouchstart
不干扰
isMobile 函数取自 Detecting mobile devices并删除了 webOS
部分,因为这将桌面浏览器视为移动设备。
关于javascript - onclick 和 ontouchstart 同时启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21513596/
我想用 JavaScript 在触摸设备上复制悬停效果。我创建了 2 个事件 ontouchstart 和 ontouchend,但由于某种原因它不起作用,我收到控制台错误。 错误:未捕获的 DOME
我有一个固定宽度为 200px x 250px 的 div。我可以使用 javascript(在鼠标按下时)使 div 内容很好地滚动,在桌面浏览器中没有问题,但我需要能够让 div 滚动到我的 ip
我正在为平板电脑/智能手机构建带有滑动功能的图片库。我在 iPad 上得到了非常奇怪的结果,所以我决定一直跟踪它回到开始,并在不同事件发生时打印出来。 以下代码本应在我用手指完成滑动后发出类似“sta
我想根据 iPad 上项目的触摸来隐藏元素。以下链接显示 - https://developer.apple.com/library/archive/documentation/AppleApplic
我目前正在使用 Electron 开发 Web 应用程序。如果我在普通的 Chrome 浏览器中打开该应用程序,它会按预期工作:点击为点击,触摸为触摸。 但是如果我用 electron 打包它,它就不
我有一个带有 -webkit-overflow-scrolling:touch 的 div,里面有一个项目列表。 我正在使用 Angular ngTouch,它将我所有的 ng-clicks 处理为
目前,为了检测触摸屏设备,我在我的 javascript 中使用它: if ('createTouch' in document) { // do touchscreen-specific stuff
我的移动 View 触发了一个 ontouchstart 事件,它链接到这个: function mobileLinksShow() { document.querySelector('.mo
我正在尝试让 ontouchstart 适用于 Windows 平板电脑。如果检测到,它会禁用链接的顶层,以便单击事件允许菜单保持打开状态(而不是悬停效果)。 以下代码适用于其他触摸设备,因此我不确定
我有一个 jQuery 移动列表。我想让列表元素在用户触摸时突出显示。我尝试使用以下方法实现: $("#id").bind('touchstart tap', function () { $(
基本上,我有一个写有 :active 的 CSS 按钮,但每次我点击手机上的按钮时,在切换到 Activity 阶段之前会有延迟。 CSS: .btn {...} .btn:active{...} 然
我正在编写一个主要针对 iOS Safari 的网站,但我也希望它能够响应普通桌面。 所以我需要让一个按钮在桌面上对 onmousedown onmouseup 事件使用react,并让一个按钮在 i
我正在尝试编写将在浏览器中或作为 phonegap 应用程序运行的代码。我需要做的一件事是确定我是否处于支持触摸事件的环境中。 我当前的问题是我的 Chrome (20.0.01132.47 m) 为
我有一个具有悬停效果的按钮。但是我想禁用 ipad 和 iphone 中的悬停。它不工作 $(document).ready(function () { $(".content
我目前对每个要更改触摸类的元素使用以下内容: ontouchstart="$(this).addClass('select');" ontouchend="$(this).removeClass('s
我的 React 应用程序中有一个 div,我需要处理点击和触摸。但是,当我点击手机时,它会触发这两个事件。 如果我在移动设备上滑动或点击普通浏览器,它工作正常,在每种情况下只触发一个事件。 如何处理
当我构建一个项目时,我发现当我使用 onClick 双击该组件时,该组件按照我预期的方式工作。但是当我将 onClick 更改为 onTouchStart 时,它开始按照我的预期工作。 但是我有点担心
当我构建一个项目时,我发现当我使用 onClick 双击该组件时,该组件按照我预期的方式工作。但是当我将 onClick 更改为 onTouchStart 时,它开始按照我的预期工作。 但是我有点担心
我正在重构别人写的一些代码。有一个函数使用: !!('ontouchstart' in window) 我在其他项目中看到过这个:https://github.com/Modernizr/Modern
我正在使用 React Native 开发一个应用程序,它必须尽快响应点击手势,因为一秒钟内可以触发多个点击事件。不需要双击或移动手势,但需要注意同时点击。我一直在测试 onTouchStart 和
我是一名优秀的程序员,十分优秀!