我将本地html文件(从资产文件夹)加载到应用程序WebView。 在HTML中,我运行了一个jQuery.getJSON(url)。该网址是一个远程服务器。WebView Javascript跨域从本地HTML文件
此操作失败,我猜测是由于不同的原始问题(跨域)。我在chrome上运行相同的文件,并在那里专门说明了这一点。
有没有办法允许Android中的WebView从本地加载的HTML文件中的远程服务器加载数据?
我将本地html文件(从资产文件夹)加载到应用程序WebView。 在HTML中,我运行了一个jQuery.getJSON(url)。该网址是一个远程服务器。WebView Javascript跨域从本地HTML文件
此操作失败,我猜测是由于不同的原始问题(跨域)。我在chrome上运行相同的文件,并在那里专门说明了这一点。
有没有办法允许Android中的WebView从本地加载的HTML文件中的远程服务器加载数据?
我加载(从资产文件夹)的本地HTML文件的应用程序的WebView
需要注意的是你没有说你是如何做。我猜测这是file:///android_asset
URL上的loadUrl()
。
有没有办法允许Android中的WebView从本地加载的HTML文件上的远程服务器加载数据?
尝试使用loadDataWithBaseURL()
加载内容,在远程服务器上提供一个URL作为基准URL。
Ajax调用不会从本地文件系统工作。更多的将会成为跨域。所以它不会工作。它在eclipse中工作,becuz你尝试从本地服务器。
不要忘记添加Internet权限在manifest文件:
<uses-permission android:name="android.permission.INTERNET"/>
还要确保您使用JSONP请求(?不要忘了&回调=如上所述)
今天早上我发现了似乎正在工作的解决方案。
初始化您的WebView:
WebView _webView = (WebView) this.findViewById(R.id.id_of_your_webview_in_layout);
得到的WebView设置:
WebSettings settings = _webView.getSettings();
集以下设置:
settings.setJavaScriptEnabled(true);
settings.setAllowFileAccessFromFileURLs(true); //Maybe you don't need this rule
settings.setAllowUniversalAccessFromFileURLs(true);
现在你可以通过标准的方式加载HTML文件:
_webView.loadUrl("file:///android_asset/www/index.html");
创建通过标准的方式
var xhr = new XMLHttpRequest();
xhr.open("get", "http://google.com", false);
xhr.send();
XHR请求在某处打印结果
document.body.innerHTML = xhr.responseText
注意: 此过程仅适用于API级别16或更高(至少文档说)。
我们使用的解决方案是使用Android从服务器获取更新文件,将它们放置并覆盖文件到Web文件夹中,然后浏览。
您是否尝试添加“&jsoncallback =?”或“callback =?”到您的网址? – Zakaria 2011-12-27 19:54:37
您是否尝试使用“.ajax”方法而不是“getJSON”?与“.ajax”,如果你把选项“数据类型:jsonp”,它应该为你工作! – Zakaria 2011-12-27 19:56:38
远程服务器是否需要专门支持JSONP才能正常工作?我对网页浏览规则不是很熟悉,他们与桌面浏览器有什么不同吗? – mattacular 2011-12-27 20:02:03