私はテストしている単一のhtmlページphonegapアプリケーションを持っています。それは私のブラウザでは完全に動作しますが、PhoneGap CLIを使用して私の電話機でテストすると、完全に機能します。私はそれをWeinreとセットアップしましたが、ブラウザのようにコンソールにエラーを表示しません。とにかく。私は、jsの冒頭で定義したグローバルな空のオブジェクトが未定義として扱われているという事実に絞り込んだので、追加しようとするとコードは単にループを開始することを拒否します。 Chromeでは、ログはオブジェクトとして正しく定義され、完全に機能します。空のグローバルオブジェクトを無視してPhonegap
はここに私のコードです:
var holding_layers_info = {};
function my_function() {
console.log(typeof holding_layers_info); // this logs undefined on PhoneGap App and object on Chrome log
// my loop here, adding values to holding_layers_info, which doesn't run because of the undefined object above
}
私は完全にこれに困惑しています、オンライン似た何かを見つけると、それを固定開始する見当がつかないことができません。 var holding_layers_info = new Object();
で空のオブジェクトを定義するか、単純にvar holding_layers_info;
としておくことで、どちらかといえば違いはありません。
関数内で定義された空のオブジェクトは期待どおりに動作しますが、これをグローバルにする必要があります。
編集:ここに私のindex.htmlの要約版である:私はロード非常に最初のJSスクリプトで
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" />
<!-- This is a wide open CSP declaration. To lock this down for production, see below. -->
<!-- <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline'; style-src 'self' 'unsafe-inline'; media-src *" /> -->
<!-- Good default declaration:
* gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
* https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
* Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
* Enable eval(): add 'unsafe-eval' to default-src
* Create your own at http://cspisawesome.com
-->
<!-- <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: 'unsafe-inline' https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *" /> -->
<link rel="stylesheet" type="text/css" href="css/ol.css">
<link rel="stylesheet" type="text/css" href="css/index.css" />
<link rel="stylesheet" type="text/css" href="css/fonts.css" />
<link rel="stylesheet" type="text/css" href="css/easy-autocomplete.css" />
<title>La la la</title>
</head>
<body>
<!-- Boring HTML-only page content here -->
<script src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<script type="text/javascript" src="js/ol.js"></script>
<script type="text/javascript" src="js/general.js"></script>
<script type="text/javascript" src="js/jquery.easy-autocomplete.min.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<script type="text/javascript">
app.initialize();
</script>
</body>
</html>
「私は最初に定義します。いくつかの下敷きの問題のために悪い結果?たとえば、関数などの実行を開始する前に、cordova.jsをインクルードしてアプリを初期化させるようにしましたか? – NoobishPro
@Babydeadうん。この機能はDevice Readyから呼び出され、cordova.jsが含まれています。私は今、このアプリをしばらく開発してきたことを付け加えておきますが、これはうまくいっていますが、これはちょうどどこからも出てきません...なぜChromeとデバイスの違いがありますか? –
ええと...私は知らない。私は自分で現在2つのphonegapアプリケーションを構築していますが、私も問題はありましたが、これもクロームでは受け入れられましたが、最終ビルドでは受け入れられませんでした。私はあなたがやっていることをすることで、多くの問題を抱えてきました。 'var変数= {};'。これは間違いなく、たとえクロムであっても間違いをもたらしました。ホールド、私はちょうど答えに私のデバッグを入れて、実際にエラーを得ることができるので、私たちは次のステップを見つけ出すことができます! – NoobishPro