android - 在 Android Phonegap App 中填写时防止滚动到输入

标签 android cordova input keypress preventdefault

我正在使用 Telerik AppBuilder 和 Cordova 3.5 版

我的问题是,我不希望我的应用程序中的 webview 滚动。每次需要滚动时,我都想使用 iScroll,我将通过我的代码处理滚动。

如果输入获得焦点并且由于在 iScroll 中滚动而不可见,应用会自动滚动 webview。

我使用 list 中的这段代码阻止了在 android 中滚动聚焦输入:

<preference name="android-windowSoftInputMode" value="adjustPan|stateVisible" />

为了防止打字时滚动,我的下一个想法是:

  1. 防止按键默认
  2. 存储按下的键
  3. 滚动到我在 iScroll 中的输入
  4. 将键粘贴到输入中(现在它确实可见并且上面的级别不会滚动 webview)

但是android v4.4.4 中的以下代码并不能防止默认:

    $input.on( 'keypress', function(e)
    {
        e.preventDefault();
        e.stopPropagation();
        return false;
    });

这是一个错误吗? 有什么解决方法吗?

编辑:

为了查看浏览器正在更改的属性,以便我可以将其更改回来,我查看了一些元素,但找不到:

  1. $(window).scrollTop() -> 不变。
  2. margin-top 和 iScroll 使用的元素顶部 -> 不变。

最佳答案

我知道这是一个老问题, 但我认为你的问题是当按键事件被触发时,'keydown' 事件已经被发送到输入,这是发送实际键的事件。按住字符键之后会触发按键。 所以你应该尝试防止默认 'keydown' 事件,并且可能还有 'keypress' 以防按住时重复字母。

$input.on( 'keydown keypress', function(e)
    {
        e.preventDefault();
    });

关于android - 在 Android Phonegap App 中填写时防止滚动到输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25204519/

相关文章:

android - setAndAllowWhileIdle 和 setExactAndAllowWhileIdle 的区别

android - finishActivity(int RequestCode)不起作用

android - 如何在 Cordova 中下载大文件?

javascript - Phonegap 条码扫描器 : couldn't make it run

css - 尝试对齐跨度和输入

c++ - 每个文件的末尾是否总是有一个换行符 (\n)?

android - 绝对定位元素在相对 div 内未正确对齐

android - 无法构建 android gradle 项目 - 对于 cordova 项目

javascript - IE输入不同行为选择文本与否

java - 如何在Android Studio中启用String.xml中的状态栏,我突然点击了隐藏通知