【问题标题】:Phonegap ondevice readyPhonegap ondevice 准备就绪
【发布时间】:2014-08-28 10:46:14
【问题描述】:

我有一个带有多个 html 文件的 phonegap 应用程序,并且对于每个 html 文件我都有 js.file。 在每个 js 文件中,我都添加了一个这样的 eventListener:

function onDeviceReady()
{ 
   alert('HI'); 
}

document.addEventListener('deviceready',onDeviceReady,false);

现在,当应用程序启动时,我正在检查设备是否准备就绪并提醒一些字符串(用于测试)。

但是当我更改为另一个 html 文件时,它不起作用,它只适用于 index.html 文件。 似乎它没有触发其他页面的事件侦听器,为什么?

编辑: 好的,正如它在下面的 cmets 中所说,设备就绪只调用一次。

所以我尝试使用 onload 事件调用 javascript 函数:

 <head> 
     <script src = "js\file.js type = "text/javascript" language = "javascript">
 </head>

<body onload = "onLoad()">
</body>

在js文件中有一个函数:

function onLoad()
{
     alert('HI');
}

但是当我移动到这个页面时,它没有提醒。

我也试过这样:

 <head>
   <script>
    $(document).ready(function()
            {
                alert('HI');
            })
    </script>
  </head>

还是……什么都没有……

【问题讨论】:

  • onDeviceReady 仅在应用程序启动时第一次执行。
  • 是的,我知道,但在此之前我尝试从 onLoad 事件调用 js 函数,但它也不起作用,所以我尝试测试这是否有助于解决问题,但是它没有
  • 我将我的 js 文件链接到 html 文件,但它没有调用该函数.. 很奇怪

标签: javascript android jquery jquery-mobile cordova


【解决方案1】:

我之前也遇到过类似的问题。首先,您如何指向其他页面? 如果你是这样做的

<a href="otherpage.html"></a>

有时 .js 文件无法正常工作。

当您向按钮添加点击事件并像这样直接指向其他页面时;

setTimeOut( function() { document.location = "otherpage.html";},50);

它有效。

这就是我解决问题的方法,我希望它也适用于你。

【讨论】:

  • 我使用的是jquery mobile,所以当用户点击按钮时,代码是"$.mobile.changePage('otherPage.html');
  • 您可以在jquery mobile中使用javascript函数。
【解决方案2】:

所以经过多次尝试让事情正常进行后,我没有设法“触发”其他 html 页面的 onload 事件。

JQM 似乎只支持一个带有多个 div 的 html.file,每个 div 就像一个页面,使用属性 data-role 设置为 page。

我不知道为什么它没有触发其他 html 文件的事件,因为我将所有必要的 js 文件添加到了那些 html 文件中。

如果您能找到任何其他解决方案,我将不胜感激。但与此同时,我认为这是唯一的解决方案,在我看来这是一件坏事,因为如果您的应用程序有很多页面,它将很难维护它......这就是为什么我试图分成不同的页面(html文件)

【讨论】:

  • 你有单页应用(只有一个html多页)或多个html应用。
  • 现在,正如我所说,我只有一个带有多个 div 的 html 文件,每个 div 就像一个页面(另一个屏幕)
  • 在单页中,DOM 仅在第一次加载..无需每次都调用 ondeviceready..只需一次即可访问所有 cordova 功能。
  • 我知道,但问题是针对多个 html 文件。不是一个文件。当我有多个页面时,问题如上述问题所述,我将其更改为一个文件
  • 在多个文件中,您需要在正文onload 函数中指定。然后只有 deviceready 事件触发。如果您使用的是 JQuery mobile,请在 pageshow 事件中包含 ondeviceready。
猜你喜欢
  • 2011-12-04
  • 2012-02-15
  • 2019-10-09
  • 2017-07-05
  • 2015-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多