2012-12-28 17 views
5

के साथ लोड किए गए एचटीएमएल से पहले जावास्क्रिप्ट इंजेक्ट करें मैं एक साधारण 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 

कोई भी सुझाव?

+0

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

उत्तर

0

यह एक लंबी हवा वाली दृष्टिकोण की तरह प्रतीत हो सकता है, लेकिन क्या आपके एंड्रॉइड कोड को फ़ाइल में जेएस कोड लिख सकता है, फिर उस फ़ाइल को अपनी एचटीएमएल फाइल में संदर्भित करें?

संबंधित मुद्दे