Android 行为不端上的 PhoneGap 选择框

Posted

技术标签:

【中文标题】Android 行为不端上的 PhoneGap 选择框【英文标题】:PhoneGap Select Boxes on Android Misbehaving 【发布时间】:2014-10-25 00:04:25 【问题描述】:

我的应用中有选择框,它们显示正确、可选择(即:可以单击它们,显然可以进行选择),但不符合它们应有的方式:

单击列表中的项目后,该选项的名称/值不会填充到表单中。

我发现了很多关于选择框问题的 *** 问题/答案,但似乎都不是我的问题。尽管如此,我已经尝试了这些建议但没有成功,包括在选择框中放置一个高 z-index 值,在 CSS 中添加一些 -webkit 特定值等等。

我试过了:

<select> box not displaying on android in PhoneGap

<select> not working in Phonegap app on Android 2.3.3

PhoneGap build webkit-appearance no drop down arrow for select tag

https://github.com/jquery/jquery-mobile/issues/6992

https://www.daniweb.com/web-development/threads/451455/phonegap-select-box-is-not-working

不涉及 jQuery。

关于选择框我有什么遗漏吗?

一个例子——html

<select name="people0" id="people0" onfocus="isDirty=1" style="display:inline-block;min-width:150px;" data-native-menu="true">
        <option value="0">Choose Person</option>
            <option value="15098">Desjardins, Emily</option>
        <option value="17304">Hulley, Patrick</option>
        <option value="1">Silver, Jason</option>
</select>

CSS:

select
    /* Suggestions found: having trouble with not being able to select items: */
    -webkit-user-select: auto !important;
    -webkit-tap-highlight-color: rgba(0,0,0,0);
    z-index:1000 !important;

11 月 8 日更新:

我发现了一个糟糕的解决方法——但至少你可以选择选项。当 HTML 响应来自服务器时,我检查其中是否有 select 元素,如果有,则将事件侦听器附加到它们:

var allSelectElements = document.getElementsByTagName('select');
for (var i=0; i < allSelectElements.length; i++) 
    allSelectElements[i].addEventListener('touchstart', function(e) 
        alert('initiating touch');
        this.focus;
    , false);

我希望有人能一劳永逸地解决这个问题。 :-/

【问题讨论】:

有时,如果在选择框处于视图中时,我拖动手指以滚动灰色背景,或者在松开之前触摸并按住选项片刻,它似乎可以工作。跨度> 发现了一个有趣的方面——不是通过添加对点击/触摸结束的关注,而是通过在 touchstart 上发送一个警告框......我现在可以让它工作的唯一方法:var allSelectElements = document.getElementsByTagName('select'); for (var i=0; i 【参考方案1】:

我用类似的代码解决了:

var allSelectElements = document.getElementsByTagName('select');
for (var i=0; i < allSelectElements.length; i++) 
    allSelectElements[i].addEventListener('touchstart', function(e)
        //This is the important line
        e.stopPropagation(); 
    , false);

【讨论】:

太棒了,干得好!【参考方案2】:

对我有用的唯一方法是添加一个 jQuery 技巧:

$('select').click(function () 
    $(this).focus();
);

【讨论】:

我用普通的旧javascript编写,但我会尝试类似的东西。 请注意我上面的技巧——只有这样我才能让它工作。 (我没有使用 jQuery)...我以编程方式将事件侦听器添加到选择框,因此在触摸它们时会出现警报。不知何故,这允许选择一个选项。 它有效,但很糟糕——肯定有更好的方法。 :-(

以上是关于Android 行为不端上的 PhoneGap 选择框的主要内容,如果未能解决你的问题,请参考以下文章

Javascript replace()在iPhone上行为不端用于长字符串

为啥 string::substr 行为不端?

markdown 不当行为行为不端

百科知识 学位论文学术不端行为检测系统简介

行为不端的积分函数

UICollectionView 中的 UITableView 行为不端