1

JQMとPhonegapを使用して2ページ(index.htmlとsecond.html)をビルドしていますが、second.htmlで使用したいのに、なぜすべてのjs関数をindex.htmlで定義する必要があるのでしょうか。

以下の私のスクリプト(second.html):

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Loan Calculator</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

<link rel="stylesheet" href="css/themes/default/jquery.mobile-1.2.0.min.css" />
<link rel="stylesheet" href="css/themes/default/jquery.mobile.theme-1.2.0.css" />
<link rel="stylesheet" href="css/themes/default/override.css" />

<script src="js/jquery-1.8.2.min.js"></script>
<script src="js/jquery.mobile-1.2.0.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/cordova-2.1.0.js"></script>

<script type="text/javascript" charset="utf-8">
    function test(){alert("hello agent!");}
</script>
</head>

<body>

<div data-role="page" id="agents">

<div data-role="header" data-position="fixed">
    <div class="ui-title">Agents</div>
</div>

<div data-role="content">
    <a href="#" onclick="test();">test</a>
</div>

<div data-role="footer" data-position="fixed">
    <p></p>
</div>

</div>
</body>
</html>

Eclipseでクリックして関数をトリガーしようとすると、次のようなメッセージが表示されました。

file:///android_asset/www/index.html: Line 1 : Uncaught ReferenceError: test is not defined

それは間違いなくsecond.htmlページで関数を見つけることができません。

js関数test()は、index.htmlに入れないと機能しません。

すべてのモバイルページを1ページに大量にロードしたくありません。

あなたのアドバイスは大歓迎です、ありがとう。

4

3 に答える 3

0

この質問が出されてからしばらく経ちました。しかし、私は答えを持っています。second.html putの内側<script src="Paging.js"></script>に Paging.js を書き込む関数 (onClick イベントで呼び出すことができます) は、window.location.href = "http:\...\index.html" を設定してリダイレクトしますindex.html に。ただし、これは jQuery Mobile AJAX 呼び出しではなく、ページをもう一度更新します (index.html から js ファイルをダウンロードし、要素を設定するなど)。

Paging.js の例:

function GotoIndex()
{
  window.location.href = "http:\\...\index.html";
}

second.html の例: ...

<a href="#" id="lnkSubmitChanges" onclick="GotoIndex()">Submit</a>

...

window.location.href の変数を取得/設定するにはどうすればよいでしょうか? index.html で localStorage.setItem('PreviousURL', window.location.href) を使用し、localStorage.getItem( 'PreviousURL') を second.html に含めます。次に、Paging.js は次のようになります。

function GotoIndex()
{
  window.location.href = localStorage.getItem('PreviousURL');
}
于 2015-10-25T04:39:02.107 に答える
0

を使用するモバイル サイトを閲覧している場合jQuery Mobile、要素に含まれるすべてのスクリプトは、 head開始元のページでのみ読み取られます。
したがって、ページから開始するindex.html と、そのページの head 要素にあるスクリプトが実行されます。
ボタンまたはナビゲーション バーを使用して別のページに移動する場合、それらのページの head 要素のスクリプトは無視されdata-role="page"ます。属性を含む title 要素と div 要素のみが解析され、DOM に取り込まれるためです。これは、jqmを使用してページを表示する組み込みの動作が原因で発生しますAjax

于 2012-12-02T14:17:27.370 に答える
0

PhoneGap 向けの優れたアプリケーション (および特に AppStore で受け入れられる可能性があるアプリケーション)を作成したい場合は、とにかく複数のページを作成しないようにする必要があります。これは頭痛の種になるだけです。handlebars.js http://handlebarsjs.com/などの優れた JS テンプレート ソリューションを調べ、cconraets の優れた phonegap チュートリアルhttp://coenraets.org/blog/phonegap-tutorial/を参照してください。

アプリでページの再読み込みを行うと、目的全体が完全に無効になり、JQuery Mobile は野獣であり、パフォーマンスの低いモバイル デバイスにはまったく役に立ちません。

于 2013-12-23T14:09:00.267 に答える