2

最初に JavaScript 環境をセットアップし、次に JavaScript 環境の存在に依存する Web コンテンツをロードすることにより、ローカル データで Android WebView を使用しています。

test.js:

alert("test.js: type of window.myVar is: " + (typeof window.myVar));
window.myVar = {};

test.html:

<!DOCTYPE>
<html><head>
<script>
alert("test.html: type of window.myVar is: " + (typeof window.myVar));
</script>
</head><body></body></html>

Java でのロード手順:

private void loadData() {
    _webView.loadUrl("javascript:" + testJSContent);
    _webView.loadDataWithBaseURL(null, testHTMLContent, "text/html", "utf-8", null);
}

初めてloadData()がトリガーされたとき、読み込まれた HTML ページからwindow.myVarを使用できますが、それ以降の試行では未定義です。以下は、3 つの呼び出しに対するアラート出力です。

-> 「test.js: window.myVar のタイプ: 未定義」と呼ばれる loadData()
「test.html: window.myVar
のタイプ: オブジェクト」
->
「test.js: window.myVar のタイプ」と呼ばれる loadData() is: object"
"test.html: type of window.myVar is: undefined"
-> loadData() が呼ばれる
"test.js: type of window.myVar is: undefined"
"test.html: type of window.myVar is:未定義"


インジェクションによって作成された JavaScript オブジェクトが、2 番目のページが読み込まれるまでしか持続しない理由はありますか?

助けてくれてありがとう!

4

1 に答える 1

0

最初に html をロードし、そのページが完全にロードされた後に javascript を挿入する必要があります。WebViewClient の OnPageFinished で行います。

于 2013-03-15T22:28:28.463 に答える