PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”

Posted

技术标签:

【中文标题】PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”【英文标题】:PhoneGap error - "Uncaught ReferenceError: cordova is not defined" 【发布时间】:2013-04-22 14:45:01 【问题描述】:

我正在尝试通过 PhoneGap 使用 android 上的菜单按钮。问题是我无法使用它,因为日志上出现此错误:

“未捕获的 ReferenceError:cordova 未定义”。

这是来源:

<!DOCTYPE html>
<html>
    <head>
            <!--<script type="text/javascript" charset="utf-8" src="js/cordova-2.6.0.js"></script>-->
            <!--<script type="text/javascript" charset="utf-8" src="cordova-2.6.0.js"></script>-->
            <!--<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>-->
            <script type="text/javascript" charset="utf-8" src="cordova.js"></script>

            <script type="text/javascript">
                function onLoad() 
                    document.addEventListener("deviceready", function () 
                        document.addEventListener("menubutton", function()
                            alert('Menu button pressed.');    
                        , true);
                    , false);
                
            </script>

    </head>
    <body onload="onLoad()">
            <p>Hello world!</p>
        </body>
</html>

我认为问题在于cordova.js 的导入,所以我尝试使用所有已注释的选项。

我不知道有没有关系,但是每次我启动脚本时,控制台都会出现这个错误,并带有红色:

E/webview(21743): registerForStylusPenEvent onAttachedToWindow
E/webview(21743): registerForStylusPenEvent START
E/webview(21743): registerForStylusPenEvent END

如果有一些英语错误,我很抱歉,但我正在尝试不使用谷歌翻译。

谢谢。

【问题讨论】:

【参考方案1】:

首先请检查您的cordova.js 的路径和文件名是否正确。然后去掉onLoad事件,在脚本文件中写入deviceready事件钩子,如下图:

<!DOCTYPE html>
<html>
  <head>
    <!--<script type="text/javascript" charset="utf-8" src="js/cordova-2.6.0.js"></script>-->
    <!--<script type="text/javascript" charset="utf-8" src="cordova-2.6.0.js"></script>-->
    <!--<script type="text/javascript" charset="utf-8" src="js/cordova.js"></script>-->
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript">
      document.addEventListener("deviceready", function () 
        document.addEventListener("menubutton", function() 
          alert('Menu button pressed.');
        , true);
      , false);
    </script>
  </head>
  <body>
    <p>Hello world!</p>
  </body>
</html>

【讨论】:

谢谢!这是一个愚蠢的错误。我看的地方说是cordova-x-x-x.js这个文件是自动添加的……你回答后,我把文件放到文件夹里就可以了。 @WhizKid 我正确添加了该 cordova.js 文件。但在那之后它就不起作用了 @DeepikaLalra 您可以将您的代码作为单独的问题发布并在此处发布链接吗? @Whizkid747 它工作正常。错误是我没有正确注册 deviceready 事件。我在写 document.addEventListener("deviceready", onDeviceReady(), false);错误是我在回调函数之后附加了“()”。

以上是关于PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”的主要内容,如果未能解决你的问题,请参考以下文章

iPhone 错误 ld:/Users/Shared/PhoneGap/Frameworks/PhoneGap.framework/PhoneGap 中的重复符号 _SBJSONErrorDomain

PhoneGap / Cordova 回调错误 - 在 PhoneGap 中未执行 RestKit 完成功能

Phonegap 安装错误 (npm)

PhoneGap/Cordova WebStorm Ubuntu - 错误

xcode 中使用 phonegap 上的 sharekit 出现重复错误(但不是 phonegap-plugin)

PhoneGap 登录错误