Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中的MHTML文件上应用javaScript函数?_Javascript_Android_Webview_Mhtml - Fatal编程技术网

如何在android中的MHTML文件上应用javaScript函数?

如何在android中的MHTML文件上应用javaScript函数?,javascript,android,webview,mhtml,Javascript,Android,Webview,Mhtml,我是新来的编码员,现在我需要一些帮助。 我使用saveWebArchive方法保存webView内容,该方法在kitkat及更高版本中以mhtml格式保存webView。这是我的代码,我对这部分没有任何问题: File internalStorage = getApplication().getDir("MyArchive",Context.MODE_PRIVATE); File webUrlPath = new File(internalStorage.getAbsolutePath());

我是新来的编码员,现在我需要一些帮助。 我使用saveWebArchive方法保存webView内容,该方法在kitkat及更高版本中以mhtml格式保存webView。这是我的代码,我对这部分没有任何问题:

File internalStorage = getApplication().getDir("MyArchive",Context.MODE_PRIVATE);
File webUrlPath = new File(internalStorage.getAbsolutePath());
String urlFileName = webUrlPath.toString();

html_path = urlFileName + File.separator + article.Articlehtml.hashCode() +
                    ".mht";
webView.saveWebArchive(html_path);
当我想在webView中加载保存的文件时,我使用Javascript来更改字体颜色,对于kitkat中较低的字体颜色,它可以完美地工作,但是对于kitkat和以上的字体颜色,更改将不适用。这里是我的代码中有问题的另一部分:

webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setDatabaseEnabled(true);
webView.getSettings().setJavaScriptEnabled(true);

File file = new File(html_path);
//for Kitkat and above
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
            webView.loadUrl("file:///" + file);
    }
    else {
          String rawData = null;
          try {
               rawData = getStringFromFile(html_url);
          }catch (Exception e){
                //e.printStackTrace();
            }
 webView.loadDataWithBaseURL(null, rawData,"application/x-webarchive-xml","UTF-8", null);
        }

  webView.setWebViewClient(new WebViewClient(){
  public void onPageFinished(WebView view, String url){
         view.setBackgroundColor(Color.parseColor("#212121"));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {        webView.evaluateJavascript("document.body.style.setProperty(\"color\", \"white\");", null);
    } else {
      webView.loadUrl("javascript:document.body.style.setProperty(\"color\", \"white\");");
} 
我希望为kitkat和更高版本保存的webView内容应用javaScript,这意味着我可以在将mhtml文件加载到webView后更改其字体颜色


感谢您的关注。

您可以使用WebArchiverReader在GitHub中查看Lower19 API。对于KitKat和更高版本,只需在webView中加载文件,但mht格式不支持JavaScript。

最后,我找到了解决问题的方法。它使用ColorMatrixColorFilter在加载webView时反转颜色