Phonegap dom更新不会立即反映在显示屏上

时间:2012-02-27 07:15:19

标签: jquery android cordova refresh

我有一个很好的Phonegap / jQuery应用程序,但是在一个区域中DOM正在被更改,直到某些用户输入(触摸,拖动,任何东西)触发显示重新渲染时才会显示。 (这在我的Android手机和平板电脑上发生,但在Chrome中有效)

function reloadSubscriptions(num) {
    if (subscriptionsStore[num]) {
        for (var x in subscriptionsStore[num]) {
            $('#' + x + 'Subscribe').html('<a href="#" onclick="unsubscribe(\'' + x + '\',\'' + num + '\'); return false;">[UN-SUBSCRIBE]</a>');
        }
    }
    $('#busy').hide();  
}

这是链中的最终函数,它会更新DOM ...有什么想法可以触发应用程序刷新显示吗?

我愿意提供APK和更大的脚本块进行演示。

我已经把它发生在其他地方,基本上每次我更新DOM而不改变很多显示。

编辑:

原始HTML页面包含:

<div id="wrapper">
    <ul id="menuList" class="menu-list"></ul>
    <div id="otherContent"></div>
</div>

按下某个按钮时,会将一个选项列表加载到#menuList中。加载后,会在每个<item-id>内创建范围#<li>订阅。加载列表后,我发布的原始函数有条件地更新了范围#<item-id>订阅。

加载选项列表时显示会更改,但在事后更新范围时则不会更改。触摸屏幕然后显示更新。

3 个答案:

答案 0 :(得分:1)

我认为你必须在你正在使用的页面上触发JQM刷新操作 喜欢:

$('#somepage').trigger('refresh');

因为您从小代码中更改了标记 检查page scripting部分创建与刷新:重要区别

答案 1 :(得分:1)

之前我在2个应用程序中看到过。当您进行细微更改(例如更新标签文本)时,似乎会发生这种情况。我认为Android“认为”没有任何改变,也没有刷新webview。

尝试更改“更大”的某些内容以及您的小改动,例如切换透明度div可见性(或用户不会注意到的任何内容)。

答案 2 :(得分:0)

我尝试在我的应用程序中使用脚本代码,但没有任何问题。虽然这只是一个测试代码,但没有额外的代码可以放在一边。

<body>
    <div id="wrapper">
        <ul id="menuList" class="menu-list"></ul>
        <div id="otherContent"></div>
    </div>
</body>

<script type="text/javascript">
    function reloadSubscriptions(num) {

        // Tried with comments enabled as well
        //for (i = 0; i < num; i += 1) {
        $('#' + i + 'Subscribe').html(
                '<a href="#" onclick="unsubscribe(\'' + i + '\',\'' + i
                        + '\'); return false;">[UN-SUBSCRIBE]</a>');
        //}

        $('#busy').hide();
    }

    function loadList(num) {
        for (i = 0; i < num; i += 1) {
            $("<li>List text <span id='"+ i+"Subscribe'></span></li>")
                    .appendTo($("#menuList"));

            reloadSubscriptions(i);
        }
    }

    loadList(5);
    // reloadSubscriptions(5);
</script>