javascript 在网络应用程序中不起作用

javascript doesn't work in web app

我正在使用 phonegap 开发一个 android 应用程序。我在我的应用程序上创建了一个最喜欢的部分,我使用 localstorage 将文件名的值设置为 1 。然后我创建了一个名为 fav.html 的页面,并将列表的 display 值设置为 none,如下所示:

<ul class="table-view">
 <li class="table-view-cell" style="display: none;">
<a class="navigate-left padder" href="modele1.html" data-transition="slide-in" >item1</a>
 </li>
 <li class="table-view-cell" style="display: none;">
<a class="navigate-left padder" href="modele2.html" data-transition="slide-in" >item2</a>
 </li>
</ul>
比我使用这样的 javascript 代码将 display 值更改为 block

<script>
    if (localStorage.getItem("modele1.html")==1){document.getElementsByClassName("table-view-cell")[0].style.display = 'block';}
    if (localStorage.getItem("modele2.html")==1){document.getElementsByClassName("table-view-cell")[1].style.display = 'block';}
</script>

我已经检查过 modele1.htmlmodele2.htmllocalstorage 值设置为 1 。该代码在 chrome 上运行良好,但是当我使用 phonegap 构建代码时,脚本不起作用。我什至在 </body> 标记之前手动将脚本添加到 fav.html 的末尾并重建应用程序,但它仍然无法在 phone 上运行?请帮助我这很重要。

我不太确定,但我想到的一件事是您没有在等待 deviceready 事件。这对于 Cordova 可能是必需的,但对于 Chrome 则不需要,因为 Cordova 需要在启动期间加载实现并且 Chrome 已经有它可用。试试这个

<script>
document.addEventListener("deviceready", function () {
    // alert("deviceready event");
    if (localStorage.getItem("modele1.html")==1) {
        // alert("1");
        document.getElementsByClassName("table-view-cell")[0].style.display = 'block';
    }
    if (localStorage.getItem("modele2.html")==1){
        // alert("2");
        document.getElementsByClassName("table-view-cell")[1].style.display = 'block';
    }
}, false);
</script>

如果仍然没有按预期运行,您可以取消注释警报以查看执行是否到达那里。

好吧,我终于找到问题了。我使用 fileName = location.pathname.substring(1); 代码来存储本地存储值的键。在 windows 中文件的完整地址是 /modele1.html 所以这个代码 return 文件名但是在 phonegap 中文件的完整地址是 /android_assets/www/modele1.html 。所以显然我需要将代码更改为 fileName = location.pathname.substring(19); 并且 Vola 问题已解决 :)