从本地的HTML文件的WebView Javascript的跨域 [英] WebView Javascript cross domain from a local HTML file

查看:2094
本文介绍了从本地的HTML文件的WebView Javascript的跨域的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我加载(从资产的文件夹)的本地HTML文件的应用程序的WebView。 在HTML我运行一个jQuery.getJSON(URL)。 URL是一个远程服务器。

这个动作失败了,我猜是因为不同的起源问题(跨域)。我运行在Chrome相同的文件有它专门是这么说的。

有没有办法,允许在Android上的WebView加载在本地加载的HTML文件从远程服务器上的数据?

解决方案

今天早上,我发现解决方案,似乎是工作。

Java的一部分

初始化您的WebView:

 的WebView _webView =(web视图)this.findViewById(R.id.id_of_your_webview_in_layout);
 

得到的WebView设置:

  WebSettings设置= _webView.getSettings();
 

设置如下设置:

  settings.setJavaScriptEnabled(真正的);
settings.setAllowFileAccessFromFileURLs(真正的); //也许你并不需要此规则
settings.setAllowUniversalAccessFromFileURLs(真正的);
 

现在你可以通过标准的方式加载HTML文件:

  _webView.loadUrl(文件:///android_asset/www/index.html);
 

JavaScript的一部分

创建通过标准的方式XHR请求

  VAR XHR =新XMLHtt prequest();
xhr.open(得,http://google.com,假);
xhr.send();
 

打印结果的地方

  document.body.innerHTML = xhr.responseText
 

  

注意:   此过程仅适用于API级别16或更高(至少文档说)。

I load a local html file (from assets folder) to the app WebView. In the HTML I run a jQuery.getJSON(url). the url is a remote server.

This action fails, and I'm guessing because of a different origin issue (cross domain). I run the same file on chrome and there it specifically says so.

Is there a way to allow the WebView in Android to load data from remote server on a local loaded HTML file?

解决方案

Today morning I found solution that seems to be working.

The Java part

Initialize your WebView:

WebView _webView = (WebView) this.findViewById(R.id.id_of_your_webview_in_layout);

get WebView settings:

WebSettings settings = _webView.getSettings();

set following settings:

settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true); //Maybe you don't need this rule
settings.setAllowUniversalAccessFromFileURLs(true);

now you can load your your html file by standard way:

_webView.loadUrl("file:///android_asset/www/index.html");

The Javascript part

Create XHR request by standard way

var xhr = new XMLHttpRequest();
xhr.open("get", "http://google.com", false);
xhr.send();

Print the result somewhere

document.body.innerHTML = xhr.responseText

NOTICE: This procedure works only on API level 16 or higher (At least the documentation says that).

这篇关于从本地的HTML文件的WebView Javascript的跨域的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆