1

我正在使用带有 NativeControls/TabBar 插件的 PhoneGap,它适用于第一页。但是,当我按下导航到不同的页面时,插件停止生效。

index.html页面上:

    <script>
        document.addEventListener("deviceready", function() {
            nativeControls = window.plugins.nativeControls;
            nativeControls.createTabBar();              
            console.log("TabBar initiated");
            nativeControls.createTabBarItem(
              "about",
              "About",
              "/www/img/20-gear2.png",
              {"onSelect": function() {
                window.location.href="about.html";
              }}
            );
            nativeControls.createTabBarItem(
              "guide",
              "Guide",
              "/www/img/76-baby.png",
              {"onSelect": function() {
                window.location.href="grid.html";
              }}
            );
            nativeControls.createTabBarItem(
              "ideas",
              "Ideas",
              "/www/img/27-planet.png",
              {"onSelect": function() {
                window.location.href="ideas.html";
              }}
            );
            nativeControls.showTabBar();
            nativeControls.showTabBarItems("about", "guide", "ideas");
        }, false)
    </script>

按下任何按钮会将其带到相应的 HTML 页面,并选择正确的选项卡。但是,在此页面上,所有选项卡都不会继续工作 - 按下选项卡按钮只会突出显示它,但不会将视图重新定位到页面。

我尝试将相同的脚本粘贴到其他页面的标题上,但那里也没有结果。

4

1 回答 1

0

我之前使用的一个解决方案是通过 AJAX 加载所有内容,而不是加载额外的 .html 页面。我在下面包含了一些片段:

在 index.html 中,我有一个 DIV 指定用于接收每个页面的 HTML

<div id="ajaxCont"> </div>

同样在 index.html 中,我声明了以下函数:

function loadPage(url, onleave, onenter, title) {                               

   // If onleave function specified
   if (onleave) {
      onleave();
   }

   var xmlhttp = new XMLHttpRequest();

   // Callback function when XMLHttpRequest is ready
   xmlhttp.onreadystatechange=function(){
      if(xmlhttp.readyState == 4){
         if (xmlhttp.status == 200 || xmlhttp.status == 0) {
            document.getElementById('ajaxCont').innerHTML = xmlhttp.responseText;

            // If onenter function specified
            if (onenter) {
                onenter();
            }
         }else {
            document.getElementById('ajaxCont').innerHTML = "Error loading page " + url;
         }
      }
   };

   xmlhttp.open("GET", url , true);
   xmlhttp.send();
}

然后,可以像这样创建每个标签栏项目:

tabBar.createItem("contact", "Contact", "/www/img/734-chat.png", {
    onSelect: function() {
       loadPage("contact.html", null, null, "Contact");
    }
});
于 2013-12-02T02:23:20.263 回答