【问题标题】:Prevent scrolling to input when filling it in Android Phonegap App在Android Phonegap App中填写时防止滚动输入
【发布时间】:2014-10-01 23:50:55
【问题描述】:

我正在使用带有 Cordova 3.5 版的 Telerik AppBuilder

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

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

我使用清单中的以下代码阻止了在 android 中滚动聚焦输入:

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

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

  1. 防止默认按键
  2. 存储按下的键
  3. 滚动到我在 iScroll 中的输入
  4. 将键粘贴到输入中(现在它肯定可见,上面的级别不会滚动 web 视图)

但android v4.4.4中的以下代码不会阻止默认:

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

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

编辑:

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

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

【问题讨论】:

    标签: android cordova input keypress preventdefault


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 2016-10-27
      相关资源
      最近更新 更多