2

我有以下标记(在第一个选项卡中)-

    <div data-role="navbar" class="myClass">
    <ul>
    <li><a rel="external" data-ajax="false" href="Tab1.html"  data-transition="slidefade" class="ui-btn-active ui-state-persist" id="favorite" data-icon="custom">Tab1</a></li>
    <li><a rel="external" data-ajax="false" href="Tab2.html" data-transition="slidefade" id="recent" data-icon="custom">Tab2</a></li> 
    <li><a rel="external" data-ajax="false" href="Tab3.html" data-transition="slidefade" id="contacts" data-icon="custom">Tab3</a></li>
    <li><a rel="external" data-ajax="false" href="Tab4.html"  data-transition="slidefade" id="keypad" data-icon="custom">Tab4</a></li>
     </ul>
</div>

当我通过点击导航栏在页面之间切换时(通过 CSS 使其看起来像 iOS 原生 UITabBar),每当我导航到选项卡时都会初始化相应的 .html 文件(我希望页面在应用程序生命中只初始化一次循环)。

当我删除属性rel="external" data-ajax="false"时,问题得到解决,但仅在 Safari 浏览器中,Chrome 停止导航到该页面并给出错误 - “错误加载页面”。- <----这是Chrome浏览器的已知行为吗?

此外,如果我声明一个像这样的对象——一旦我离开页面window.variable=xyz; ,存储的值window.variable就会丢失,即应用程序在每次点击导航栏后都会重新初始化,我无法window在整个应用程序中共享该对象。

而且,如果我给——

<script>
            $(document).bind("mobileinit", function(){
            alert('Page inited');                     
});
 </script>

在 Tab1.html、Tab2.html、Tab3.html 和 Tab4.html 的标题中,每当我导航到我不希望发生的相应标签页时,都会调用脚本,即标记中的整个标题。

这是 Google Chrome 浏览器中的已知问题/功能吗?Safari- 也是基于 Webkit 构建的,其行为方式有所不同。

4

1 回答 1

2

绝对删除rel="external" & data-ajax="false"属性,它们会阻止页面兑现。

然后你需要像这样打开兑现:

$(document).one("mobileinit", function () {
    $.mobile.page.prototype.options.domCache = true;
});

当您希望兑现每一页时才使用此选项。如果您只想兑现某些页面,请使用以下类比:

<div data-role="page" id="cacheMe" data-dom-cache="true">

您还可以像这样以编程方式缓存页面:

pageContainerElement.page({ domCache: true });

如果您在多个 html-s 中有多个页面,则需要像这样使用 data-prefetch 属性:

<a href="prefetchThisPage.html" data-prefetch> ... </a>

在这里你会找到我关于这种兑现的其他答案:https ://stackoverflow.com/a/14019929/1848600

现在谈谈持久对象。如果您遵循了最重要的说明,您可以像这样简单地创建一个持久对象:

var someObject = { option1 : '', option2 : 0, option3 : '' //etc.. }

rel="external" & data-ajax="false"将阻止 jQM 情况下的对象持久性,这些属性就像页面刷新一样。

于 2012-12-26T12:43:10.637 回答