Я создаю кросс-платформенное приложение с Cordova и jQuery Mobile 1.4.5, у меня есть простая страница html
, которая должна загрузить файл javascript
.Javascript загружен только в первый раз или после обновления
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<!-- Include jQUERY --->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="jquery/jquery.mobile-1.4.5.css">
<link rel="stylesheet" href="css/custom-icons.css">
<script src="jquery/jquery.js"></script>
<script src="jquery/jquery.mobile-1.4.5.js"></script>
<title>myPage</title>
</head>
<body>
<!-- jQUERY HEADER is a navigation bar with multiple options -->
<div data-role="header">
<a href="index.html" class="ui-btn ui-icon-home ui-btn-icon-left">Home</a>
<h1>my app</h1>
<div data-role="navbar">
<ul id="nav-bar">
<li><a href="a.html" data-page="a">a</a></li>
<li><a href="b.html" data-page="b">b</a></li>
<li><a href="c.html" data-page="c">c</a></li>
</ul>
</div>
</div>
<div role="main" class="ui-content">
<center><h3><i>A title</i></h3>
<fieldset data-role="controlgroup" data-type="horizontal" data-mini="true">
<legend>my legend</legend>
<input type="checkbox" data-role="flipswitch" name="flip1" id="flip1">
<input type="checkbox" data-role="flipswitch" name="flip2" id="flip2">
<input type="checkbox" data-role="flipswitch" name="flip3" id="flip3">
<input type="checkbox" data-role="flipswitch" name="flip4" id="flip4">
</fieldset>
</center>
</div>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/home.js"></script>
</body>
</html>
Однако файл home.js
загружается только в первый раз (или при обновлении), но если я, например, на b.html
и я перейти к странице выше (index.html
), то home.js
не выполняется.
Файл дома home.js
просто содержит console.log("executed");
, который печатается при Cordova загружает файл index.html
, но не тогда, когда я позже вручную перейти на эту страницу с помощью навигационной панели.
РЕДАКТИРОВАТЬ: Обратите внимание, что на других страницах этого поведения нет. Например, страница ниже всегда загружает файл javascript.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
<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">
<link rel="stylesheet" type="text/css" href="css/index.css"> -->
<!-- Include jQUERY --->
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="jquery/jquery.mobile-1.4.5.css">
<link rel="stylesheet" href="css/custom-icons.css">
<script src="jquery/jquery.js"></script>
<script src="jquery/jquery.mobile-1.4.5.js"></script>
<title>bla bla</title>
</head>
<body>
<!-- jQUERY HEADER is a navigation bar with multiple options -->
<div data-role="header">
<a href="index.html" class="ui-btn ui-icon-home ui-btn-icon-left">Home</a>
<h1>smartHub</h1>
<div data-role="navbar">
<ul id="nav-bar">
<li><a href="a.html" data-page="a">a</a></li>
<li><a href="b.html" data-page="b">b</a></li>
<li><a href="c.html" data-page="c">c</a></li>
</ul>
</div>
</div>
<div data-role="collapsible" data-collapsed-icon="carat-d" data-expanded-icon="carat-u">
<h1>...</h1>
<ul data-role="listview" data-inset="false">
...
</ul>
</div>
<div data-role="collapsible" data-collapsed-icon="carat-d" data-expanded-icon="carat-u">
<h1>...</h1>
<ul data-role="listview" data-inset="false">
...
</ul>
</div>
<script type="text/javascript" src="js/someOtherFile.js"></script>
</body>
</html>
EDIT: Я «фиксированный» проблему, изменив ссылку на домашнюю страницу в заголовке этого <a href="#" id="homeButton" class="ui-btn ui-icon-home ui-btn-icon-left">Home</a>
, а затем положить на обработчик щелчка по кнопке дома, как это:
$("#homeButton").on("click", function() {
window.location.replace("index.html");
});
Это эквивалентно просмотру страницы. Однако я не считаю это правильным решением. Было бы хорошо, если бы кто-нибудь мог указать, почему моя домашняя страница демонстрирует такое поведение.
Кроме того, это на самом деле не является решением вообще, так как кажется, что вещи я поместил в localStorage
теряются при перенаправлении index.html
...
EDIT: я воспроизвел эту проблему как можно более простым , Воспроизведение содержит два html-файла, которые можно найти here. При просмотре до index.html
он печатает On index.html
, затем мы можем использовать навигационную панель, чтобы перейти к a.html
, которая будет печатать On page a.html
. Если мы снова перейдем к индексу, нажав кнопку «домой», он больше не будет печатать On index.html
(следовательно, сценарий не будет выполнен), а если мы снова перейдем к a.html
, он напечатает On page a.html
(следовательно, этот скрипт выполняется каждый раз мы переходим на страницу, пока скрипт на индексной странице не работает).
У 'b.html' есть один и тот же HTML-код? – fzzle
@fzzle 'b.html' содержит тот же заголовок, но, конечно, имеет другое тело и включает в себя другой файл javascript. – HyperZ
Может ли нижестоящий избиратель хотя бы быть конструктивным? В чем причина этого? – HyperZ