0

ローカルに保存された Html を iframe で開く PhoneGap 2.0 を使用して Android アプリを開発しています。問題は、Html を読み込もうとすると表示されるが、アプリが壊れる (Javascript が実行されない) ことです。これは私がlogcatで得るものです:

09-12 12:14:43.374: D/CordovaWebView(19771): >>> loadUrlNow()
09-12 12:14:43.394: D/CordovaLog(19771): JSCallback Error: Request failed.
09-12 12:14:43.394: D/CordovaLog(19771): file:///android_asset/www/js/lib/cordova-2.0.0.js: Line 3698 : JSCallback Error: Request failed.
09-12 12:14:43.394: I/Web Console(19771): JSCallback Error: Request failed. at file:///android_asset/www/js/lib/cordova-2.0.0.js:3698
09-12 12:14:43.414: D/DroidGap(19771): onMessage(onPageStarted,file:///storage/sdcard0/file.html)
09-12 12:14:43.584: D/chromium(19771): Unknown chromium error: -6
09-12 12:14:43.704: D/Cordova(19771): onPageFinished(file:///storage/sdcard0/file.html)
09-12 12:14:43.704: D/CordovaWebView(19771): >>> loadUrlNow()
09-12 12:14:43.714: D/DroidGap(19771): onMessage(onNativeReady,null)
09-12 12:14:43.714: D/DroidGap(19771): onMessage(onPageFinished,file:///storage/sdcard0/file.html)

編集:

実際に起こっていることは、アプリの html 全体がファイルの html に置き換えられていることです。それが Javascript が実行されなかった理由です... Javascript がありませんでした。これは、この動作を回避する方法を知っている人はいますか?

4

1 に答える 1

0

最適ではありませんが、解決策を見つけました...それはCordova/PhoneGapソースコードを変更してコンパイルすることで構成されています。これらの変更の結果はわかりませんが、機能しているようです。変更するファイルは org.apache.cordova.CordovaWebViewClient.java です。一連の行をコメントfalseし、最後に戻る必要があります。これはスニペットです:

    // All else 
    //        else { 
    // 
    //            // If our app or file:, then load into a new Cordova webview container by starting a new instance of our activity. 
    //            // Our app continues to run.  When BACK is pressed, our app is redisplayed. 
    //            if (url.startsWith("file://") || url.indexOf(this.ctx.baseUrl) == 0 || ctx.isUrlWhiteListed(url)) { 
    //                this.ctx.loadUrl(url); 
    //            } 
    // 
    //            // If not our application, let default viewer handle 
    //            else { 
    //                try { 
    //                    Intent intent = new Intent(Intent.ACTION_VIEW); 
    //                    intent.setData(Uri.parse(url)); 
    //                    ctx.startActivity(intent); 
    //                } catch (android.content.ActivityNotFoundException e) { 
    //                    LOG.e(TAG, "Error loading url "+url, e); 
    //                } 
    //            } 
    //        } 
    //        return true; 
    return false; 

私はここから解決策を持っています

于 2012-09-12T13:15:06.947 に答える