为什么我的自定义插件只能在cordova(phonegap)中访问一次后才能工作?

时间:2012-09-17 08:58:29

标签: cordova plugins

我使用cordova的角色创建了一个自定义插件。我已将插件的键/值添加到cordova.plist并在本机ios代码中写入插件。但是,只有在我访问了fllowing页面之后,我才能得到结果。我不知道哪里出了问题。如果cordova js需要一些初始化?

<!DOCTYPE html>
<html>
<head>
<title>Overview</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<script src="js/jquery.min.js"></script>
<script type="text/javascript" src="cordova-2.0.0.js"></script>

<style type="text/css">

    *{  margin:0;
        padding:0;
    }

    body {
        margin-left:0px;
        width:1024px;
        background-image: url("content/main/defaultbg.jpg");
        background-size:1024px 768px;
    }

</style>
</head>
<body>
   <div id="slr_left_title">
    html code ....
   </div>
<script>

setTimeout(function(){

   window.getReportList = function(reportCategory, successCallback) {
        cordova.exec(successCallback, function(err) {
                    callback('get the category list error!');
                    }, "SLReportList", "getlist", [reportCategory]);
   };

   window.getReportList("atestcategory", function(result) {
              alert(result);
   });
},0);
</script>
</body>
</html>

2 个答案:

答案 0 :(得分:2)

如果不知道你的插件尝试做什么并看到它的代码,很难确切知道出了什么问题,但这是我最好的猜测。

Cordova插件按需懒洋洋地加载。因此,在您至少调用一次exec()之前,您的插件才会生效。如果你的插件是偶尔用信息调用Javascript的插件,而没有Javascript每次都要求它,那么你需要在插件的initialize开始时调用exec()方法。该计划。

答案 1 :(得分:0)

从Cordova 2.5.0开始,您可以在cordova的config xml中为该插件的条目添加onload="true"

请参阅http://cordova.apache.org/docs/en/2.6.0/guide_plugin-development_ios_index.md.html