3

複数のモバイルプラットフォームで動作するように設計されたPhoneGapアプリケーションがあります。jQuery Mobileを使用して、インターネット上の外部ページからダイナミックHTMLコンテンツを読み込んでいます。問題のあるシステムはWindowsPhone7です。

これは私が外部ページから取得したものであり、帯域幅を節約するために、スクリプトタグのURLがネットからではなく電話からロードするようにすでに置き換えられています。

<script type="text/javascript" charset="utf-8" src="x-wmapp1:/app/www/test.js"></script>

これは、 x-wmapp1:パーツをそれぞれの対応するパーツ(Androidの場合はfile:/// android_asset / www /など)に置き換えた場合、Android、iPhone、さらにはBlackBerryでも正常に機能します。ただし、Windows Phone 7では、まったく機能しないようです。

$ .getScript関数を使用して同じURLを読み込もうとすると、相対パスのみで読み込もうとしても、常に404エラーが返されます。

助言がありますか?

4

2 に答える 2

4

GapSourceDictionary.xmlにjsを追加してみてください。

GapSourceDictionary.xml XMLファイルには、すべてのHTMLアプリケーションリソースがリストされています。アプリケーションが起動すると、このXMLファイルが読み取られ、リストに含まれているすべてのファイルが分離されたストレージに追加され、WebBrowserコントロールで処理できるようになります。

たとえば、GapSourceDictionary.xmlは次のようになります。

    <?xml version="1.0" encoding="utf-8"?>
    <GapSourceDictionary>
        <FilePath Value="www\index.html"/>
        <FilePath Value="www\test.css"/>
        <FilePath Value="www\phonegap-1.3.0.js"/>
        <FilePath Value="www\js\custom.js"/>
    </GapSourceDictionary>

HTMLファイルで、相対パスを使用して外部スクリプトファイルのURLを指定します。

    <script type="text/javascript" src="./js/custom.js"></script>

編集済み

次の手順を使用して、新しいローカルJavaScriptファイルを動的にロードすることに成功しました。テストはPhoneGap2.0で成功しました。残念ながら、同じテストがPhoneGap1.8.1で失敗しました

以下は、JSを動的にロードするソースコードです。

function dynamicJSload(url)
{
    var script = document.createElement('script');
    script.type = "text/javascript";
    if (script.readyState)
    {
        script.onreadystatechange = function(){
            if (script.readyState == "complete" || script.readyState == "loaded"){
                script.onreadystatechange = null;
            }
        };
    }
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

私のページでは、次のような関数を呼び出しました。

  dynamicJSload("js\\test.js");

これがお役に立てば幸いです。

于 2012-08-21T15:47:15.063 に答える
1

のようなWindowsパスを使用してみてくださいfile:\\\。ファイルシステムは\ディレクトリの分離を想定しているため、これが最も可能性の高い問題です。

于 2012-08-26T17:53:47.323 に答える