Файлы JavaScript не работают в приложении Android PhoneGapped, jQuery mobile не используется

У меня есть гибридное приложение, которое я создал с помощью HTML5, CSS3, JavaScript и некоторого количества jQuery. Я также использую FireBase для хранения данных. Все работает хорошо, пока я не подключил приложение PhoneGap к устройству (Android). Он загружает серверный контент, поэтому я знаю, что с Интернетом проблем нет. HTML и CSS работают нормально. Но ни одна из функций не работает, как будто мои файлы .js игнорируются. Предпринятые шаги:

Убедитесь, что <access origin="*" /> включен в файл config.xml,

Убедитесь, что <uses-permission android:name="android.permission.INTERNET" /> включен в файл AndroidManifest.xml,

Убедитесь, что все теги <script> включены в теги <body> каждого HTML-файла,

Убедитесь, что index.html сохраняет исходный файл PhoneGap index.js с кодом app init в нем, и после этого загружаются все мои теги <script>,

Убедитесь, что index.html содержит все теги <script> для проекта.

Ниже приведен файл PhoneGapped index.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" />
    <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' gap:; style-src 'self' 'unsafe-inline'; media-src *" />
    <link rel="stylesheet" href="css/customFitStyling.css" type="text/css">
    <link rel="stylesheet" href="css/w3c_v4.css" type="text/css">
    <title>CustomFit</title>
  </head>
  <body>

    <!--CONTENT-->

    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/index.js"></script>
    <script type="text/javascript">
      app.initialize();
    </script>
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="js/customFitFunctions.js"></script>
    <script type="text/javascript" src="js/setFalseBool.js"></script>
  </body>
</html>

person Brian    schedule 20.11.2017    source источник
comment
Почему ваш метатег CSP остается открытым?   -  person ghybs    schedule 20.11.2017
comment
Вы уже пытались удалить ./ (точку и плеть) ваших относительных URL-адресов сценария, как вы сделали с вашими css-тегами? Этот ответ также может вам помочь.   -  person Blauharley    schedule 20.11.2017
comment
@ghybs это была просто ошибка при копировании и вставке из моего исходного кода.   -  person Brian    schedule 20.11.2017
comment
@Blauharley спасибо, это было частью возможного решения, которое я пробовал, похоже, в любом случае это не имеет значения.   -  person Brian    schedule 20.11.2017


Ответы (2)


Прокомментируйте это.

<!--<meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' gap:; style-src 'self' 'unsafe-inline'; media-src *" />-->
person Chathura Edirisinghe    schedule 24.11.2017
comment
Спасибо за ваше предложение, но, боюсь, оно не сработало. - person Brian; 24.11.2017

Не знаю, интересно ли это кому-то, но я наконец-то разобрался с проблемой. У меня есть этот фрагмент кода в верхней части моего файла функций:

// Set latest workout.
var title = JSON.parse(localStorage.workout);
$("#latest").text("Latest: " + title.title);

Он отлично работает в браузере и даже на телефоне, он делает то, что должен. Но каждая функция после этого ломается. Если я console.log() переменную localStorage.workout, она регистрирует объект, содержащий три массива, как я и ожидал. Если я заменю JSON.parse этим объектом, код будет работать так же, и все функции снова начнут работать. Кто-нибудь знает, что происходит?

person Brian    schedule 29.11.2017