为什么cordova-plugin-nativestorage在浏览器上有效,而在电话上却不可用

时间:2018-06-26 12:30:29

标签: cordova-plugins phonegap-plugins hybrid-mobile-app phonegap cordova-nativestorage

我正在使用Phonegap CLI服务我的项目,而我的插件版本是:2.3.1 因此,我编写了以下代码以在设备就绪后执行:

NativeStorage.getItem("abcd",function(){
			console.log("success");alert("success");
		},function(){
			console.log("fail");alert("failed :)");
		});

当我在浏览器上对其进行测试时,它可以完美工作。但是,当我在Android手机上打开此应用程序时,NativeStorage代码根本不起作用。

我用weinre调试了我的应用程序:

我收到错误:ReferenceError:未定义NativeStorage enter image description here

我还删除了插件和所有平台,然后重新安装它们;但是,我仍然遇到相同的错误。

能帮我找到问题吗?

1 个答案:

答案 0 :(得分:0)

在调用NativeStorage插件之前,您是否正在等待设备准备就绪?

在index.js中,您应该添加类似于以下代码的设备处理内容。

if (window.cordova) {
  document.addEventListener("deviceready", onDeviceReady, false);
}

注意:如果要在没有Cordova容器的浏览器中使用应用程序,则应定义一个else分支。如果不是Cordova容器,它将跳到else分支并立即执行功能。

if (window.cordova) {
  document.addEventListener("deviceready", onDeviceReady, false);
} else {
  onDeviceReady();
}

document.addEventListener(“ deviceready”,onDeviceReady,false)

  • 参数1-“ deviceready”:事件的名称
  • 参数2-onDeviceReady:启动应用程序的函数的名称。 这个名字当然可以和我的名字不同。
  • 参数3-否 (可选):一个布尔值,它指定事件是否应该 在捕获阶段或冒泡阶段执行。 (资源: w3schools.com)

有关addEventListener的更多信息:https://www.w3schools.com/jsref/met_document_addeventlistener.asp

在“ onDeviceReady”函数或更高版本中,您现在可以调用在config.xml中定义的插件

例如:

function onDeviceReady() {
  //call your plugins
  NativeStorage.getItem(<...>);
}

希望有帮助。