javascript
  • android
  • webview
  • 2015-06-05 55 views 0 likes 
    0

    我想加載一個網頁到webview。通常,當我打電話如何將JavaScript重定向加載到android webview中?

    webview.loadUrl(url); 
    

    它工作正常。該網址有一個重定向頁面的JavaScript代碼。這裏是jacascript代碼:

    <script type="text/javascript"> 
         if (!document.cookie || document.cookie.indexOf('AVPDCAP=') == -1) 
         { document.write('<scr'+'ipt src="http://some_link_here+Math.floor(89999999*Math.random()+10000000)+'&millis='+new Date().getTime()+'&referrer='+encodeURIComponent(document.location)+'" type="text/javascript"></scr'+'ipt>'); } 
    </script> 
    

    當我嘗試的JavaScript代碼加載到我的WebView類似如下:

    String data = javascript_code_above; 
    topBannerWV.loadDataWithBaseURL("", data, "text/html", "UTF-8", null); 
    

    其中的數據是這樣的javascript代碼,它不會加載該頁面。我也試過如下:

    topBannerWV.loadDataWithBaseURL("", data, "text/javascript", "UTF-8", null); 
    

    但這次文本加載到webview。誰能幫我這個?

    謝謝。

    +0

    嘗試啓用javascript: 'WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true);' – Saadi

    +0

    @Saadi它已通過wv.getSettings()啓用setJavaScriptEnabled(true); – yrazlik

    +0

    參考這個http://stackoverflow.com/questions/14374553/android-webview-loaddatawithbaseurl-how-load-images-from-assets – cracker

    回答

    0

    我找到了解決辦法。

    而不是直接給webview加載字符串,我首先將它寫入一個文件,然後將該文件給webview加載。

    getContext().getApplicationContext().deleteFile("data.html"); 
    Writer output = null; 
    File dir = getContext().getApplicationContext().getFilesDir(); 
    File file = new File(dir.getAbsolutePath() + File.separator + "data.html"); 
    file.createNewFile(); 
    output = new BufferedWriter(new FileWriter(file)); 
    output.write(WVdata); 
    output.close(); 
    topBannerWV.loadUrl("file:///" + getContext().getApplicationContext().getFilesDir() + "/data.html"); 
    

    我不知道爲什麼會這樣,其實我不改變數據串,只是把它放到一個文件中。

    0

    我做這樣的事情,它完美的作品:在HTML文件中

    webView.loadUrl("file:///android_asset/html.html"); 
    webView.setWebViewClient(new WebViewClient() { 
    
    public void onPageFinished(WebView view, String url) { 
        try {   
           webView.loadUrl("javascript:init('" + some parameter + "')"); 
    
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
        } 
    }); 
    

    腳本是:

    <script type="text/javascript"> 
     
    function init(val){ 
     
    document.getElementById('content').innerHTML=val; 
     
    } 
     
    window.addEventListener('load',function(){ 
     
    \t console.log("Window Loader"); 
     
    \t init(); 
     
    }); 
     
    </script>

    相關問題