我將本地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