【问题标题】:Load HTML-file that is using Javascript in a WebView在 WebView 中加载使用 Javascript 的 HTML 文件
【发布时间】:2011-12-19 09:37:07
【问题描述】:

我正在尝试在 WebView 中打开一个使用 javascript.html 页面。 明确地说,我正在尝试通过 1000°-ePaper 打开演示电子书。

我将演示文件夹复制到我的资产文件夹中,因此有一个名为“mobile.html”的文件。这个 HTML 文件使用了一些 javascript 和 .css。好像是先打开一个“mobile.html#/page/0”。

当我加载 WebView 时,它说:“请激活 Javascript”。

我的代码:

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

mWebView.loadUrl("file:///android_asset/Prospect/test/mobile.html");

所以它应该工作,对吧?令人困惑的是,当我将所有内容放到网上并使用 defaultBrowser 时,我可以加载 mobile.html。

【问题讨论】:

  • 只是想知道“请激活 JavaScript”消息是来自 WebView 类还是来自 HTML/JavaScript?我以前没见过它,我用过几次嵌入式 HTML 和 JavaScript。通常它只适用于 WebView.getSettings().setJavaScriptEnabled(true);所以我想这只是某个地方出了点小问题。即使您不使用它们,我认为也有助于引入客户端,例如 WebView.setWebChromeClient(new WebChromeClient());
  • 这是来自 HTML/JavaScript 的消息。好的,很高兴听到它应该很小。

标签: javascript android webview


【解决方案1】:

我建议您将 webviewClient 和 WebChromeClient 关联到您的 Web 视图。

【讨论】:

  • 好的,我在本教程中这样做了,但没有帮助:giantflyingsaucer.com/blog/?p=1331 我认为,WebChromeClient 只是有助于显示进度,而 Webviewclient 会覆盖默认浏览器?还是我做错了?
  • 您对 WebViewClient 的看法是绝对正确的,因为 WebChromeClient 负责处理 Javascript 消息和进程。
【解决方案2】:
 public class ViewWeb extends Activity {           
     @Override         
     public void onCreate(Bundle savedInstanceState) {         

     super.onCreate(savedInstanceState);     
     setContentView(R.layout.webview);           
     WebView mWebView;            
     mWebView = (WebView) findViewById(R.id.webView1);        
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setSavePassword(false);    
     mWebView.getSettings().setSaveFormData(false); 
     mWebView.loadUrl("file:///android_asset/myfile.html");     
     mWebView.setWebViewClient(new MyWebViewClient()); 

 private class MyWebViewClient extends WebViewClient  {   
     @Override     
     //show the web page in webview but not in web browser   
     public boolean shouldOverrideUrlLoading(WebView view, String url) {      
         view.loadUrl (url);      
         return true;
     } 
 }
 mWebView.loadData("", "text/html", "utf-8"); 

【讨论】:

  • 我试过了并在此处复制了 HTML 文件的文本: mWebView.loadData("HERE I copy the text of the mobile.html", "text/html", "utf-8" );那是你的想法吗?不幸的是,它只是显示了清晰的 html 文本并忽略了链接和单独文件中的 css/javascript 代码,所以我没有内联代码
  • 在您的情况下,“myfile.html”是否只是打开 webClient 的帮助文件?
  • 你有没有试过把一些东西(JS,CSS)内联,看看它是否有效?也许存在链接问题?
  • 直到现在才尝试这个,因为 .js 代码太多了。明确地说,这是我购买的 ePaper-HTML-document。似乎 DOM 的构建速度不够快,导致 15 次中的 1 次内容显示得非常好。是否有可能花费足够的时间来构建 DOM? LogCat 说:couldn't execute method getWidth() of undefined'。在 .js 文件中,有:this.body.getWidth() .
猜你喜欢
  • 2012-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-30
  • 1970-01-01
  • 2014-01-19
  • 2014-02-28
  • 1970-01-01
相关资源
最近更新 更多