के साथ लोड किए गए एचटीएमएल से पहले जावास्क्रिप्ट इंजेक्ट करें मैं एक साधारण HTML पृष्ठ लोड करने के लिए एंड्रॉइड वेबव्यू का उपयोग कर रहा हूं। एचटीएमएल जावास्क्रिप्ट कोड के एक छोटे टुकड़े पर निर्भर करता है।एंड्रॉइड वेबव्यू
मुझे HTML लोड होने से पहले जावास्क्रिप्ट इंजेक्ट करने की आवश्यकता है। तो मैं इसे इस तरह कार्य करें:
public class MainActivity extends Activity {
WebView mWebView;
Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView)findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public boolean onJsAlert(WebView view, String url, String message,JsResult result) {
return super.onJsAlert(view, url, message, result);
}
});
mButton = (Button)findViewById(R.id.button);
mButton.setOnClickListener(new myListener());
}
class myListener implements OnClickListener{
int mCount = 1;
@Override
public void onClick(View arg0) {
System.out.println("Load test page=>"+mCount+" times");
mWebView.loadUrl("javascript:var output='This string is defined before html loaded.'");
mWebView.loadUrl("file:///android_asset/test.html");
mCount++;
}
}
}
एचटीएमएल कोड:
<html>
<head>
<script>
alert(output);
</script>
<head>
<body>
</body>
</html>
जे एस और HTML ठीक काम करता है जब मैं बटन पहली बार क्लिक करें। लेकिन जब मैं फिर से लोड निष्पादित करने के लिए बटन क्लिक करता हूं, तो यह विफल हो जाता है।
लॉग्स:
Load test page=>1 times
Load test page=>2 times
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5
Load test page=>3 times
Uncaught ReferenceError: output is not defined at file:///android_asset/test.html:5
कोई भी सुझाव?
WebView.loadDataWithBaseURL() http://developer.android.com/reference/android/webkit/WebView.html#loadDataWithBaseURL(java.lang.String, java.lang.String, java.lang.String, जावा .lang.String, java.lang.String), एचटीएमएल (जैसे स्ट्रिंग प्रतिस्थापन) में संस्करण प्रस्तुत करें, फिर स्ट्रिंग को एक पृष्ठ के रूप में लोड करें। – CodeColorist