Android - JavaScript :在缩放或滚动页面之前不会触发 touchstart 事件
Android - JavaScript : touchstart event not fired until zoom or scroll the page
在我的Android应用程序中,用户可以使用ViewPager浏览一些HTML页面,用户可以触摸元素以突出显示。
问题是当使用以下代码尝试使用 JavaScript 获取触摸事件时,elementFromPoint 在导航到新页面时返回 null,但在用户缩放页面或在其上滚动后,它工作正常。
我发现触摸启动事件的注册发生在缩放或滚动页面之后。 所以它在那之后立即工作,尽管它是在 $(document).ready() 上注册
的 $(document).ready(function(){
document.addEventListener("touchstart", touchstart, false);
});
function touchstart(e) {
var x = e.targetTouches[0].clientX;
var y = e.targetTouches[0].clientY;
el = document.elementFromPoint(x, y);
}
谢谢
调用
JavaScript 后在 Java 代码中编写下一段代码:
myWebview.scrollTo(1, 0);
myWebview.scrollTo(0, 0);
或使用放大然后缩小
myWebview.zoomIn();
myWebview.zoomOut();
使用穆罕默德·阿卜杜勒·拉蒂夫的解决方案(显然这是另一个蹩脚的 WebView 错误)下面是在 Android 4.1.2 上为我修复它的原因。注意:我在Android 4.4.2上对此进行了测试,不需要此黑客修复错误。
@Override
public void onCreate(Bundle savedInstanceState)
{
final WebView myWebView = (WebView) findViewById(R.id.mywebview);
myWebView.setHorizontalScrollBarEnabled(false);
myWebView.getSettings().setJavaScriptEnabled(true);
myWebView.loadDataWithBaseURL("file:///android_asset/", YOUR_HTML_GOES_HERE, "text/html", "utf-8", null);
myWebView.setWebViewClient(new WebViewClient()
{
// overcome the ontouchstart registration bug !
@Override
public void onPageFinished(WebView view, String url)
{
super.onPageFinished(view, url);
final WebView myWebView = (WebView) findViewById(R.id.mywebview);
myWebview.scrollTo(1, 0);
myWebview.scrollTo(0, 0);
}
});
}
相关文章:
- jQuery未在私人浏览中触发tap/touchstart事件
- 为什么 touchstart 事件在 Firefox 中没有触发
- '触摸屏'如果在touchstart上移除被触摸的子元素,则不激发父元素的事件
- touchstart和touchend事件引用相同的元素,而事件在不同的元素上执行
- JS touchstart 事件不会在 Windws 8 平板电脑上触发
- 为什么这个Javascript插件在移动设备上使用“touchstart”而不是“click”事件
- Touchstart 事件永远不会在网页加载的首次加载时在 Android Chrome 上触发
- 在phonegap中使用touchstart和touchend事件旁边的滚动
- 为什么是event.offsetX"当"touchstart"事件
- 如何在touchend事件中获取touchstart值
- Touchstart事件委托
- touchstart和touchend事件不工作在tableview的钛(Android)
- 禁止touchStart,但允许点击事件
- 为什么当touchstart事件触发时setTimeout游戏循环会出现延迟
- Touchstart事件在滚动后停止工作
- 如何/是否可以在Firefox Windows触摸桌面中创建与touchstart事件相对应的侦听器
- 使用touchstart事件无法识别碰撞
- 当touchstart事件调用preventDefault()时,为什么onclick事件被抑制?
- 当键盘打开时,WKWebView的第一个touchstart事件不会触发
- 如何在iOS上将所有onClick事件更改为TouchStart