最初に 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 番目のページが読み込まれるまでしか持続しない理由はありますか?
助けてくれてありがとう!