Android WebView + AJAX本地文件
我有一个android webview加载我在本地拥有资产的网站。我不是自己构建的,对标记,js等的控制很少。
问题:网站的某些部分使用jquery $ .ajax-
gets获取HTML以模态显示,并且我认为我遇到了跨域问题(如果我在台式机上本地测试该网站,则会得到相同的来源-警告,我的来源是“
null”),即由于某种原因,本地js无法ajax获取Assets文件夹中的其他本地文件,因为底层浏览器认为这些来自不同的来源。我已经阅读了有关该内容的所有内容,但似乎没有任何区别。在LogCat中未收到任何错误或警告。
它在Nexus 7上运行,文件位于资产文件夹(file:///android_asset
)中。其他一切都工作正常,但是使用ajax GET却没有运气。
从清单中:
<uses-sdk android:minSdkVersion="16"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
相关的网页视图代码:
mWebView = (WebView) findViewById(R.id.webview);mWebView.setWebChromeClient(new WebChromeClient());
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setSupportMultipleWindows(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.setHorizontalScrollBarEnabled(false);
mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.getSettings().setAllowFileAccessFromFileURLs(true);
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
mWebView.addJavascriptInterface(this, "android");
if (savedInstanceState != null) {
mWebView.restoreState(savedInstanceState);
} else {
mWebView.loadUrl("file:///android_asset/site/index.html");
}
这是相关的js:
var load = function ( source, callback, dontShowLoader ) {if( !dontShowLoader ) {
loading( 'show' );
}
$.ajax({
url: source,
type: 'GET',
data: {
campaign: true
},
success: function ( data ) {
var $data = $(data);
loading( 'hide' );
$data.data( 'url', source );
callback( $(data) );
}
});
};
我在这里想念什么吗?真的没有办法对本地文件内容执行Ajax GET吗?请注意,我 只有
本地文件可以使用,正常使用情况是使用该应用程序时平板电脑未连接到互联网,因此任何外部呼叫都无法进行。
回答:
您需要允许跨域。在此示例中,跨域允许用于json值和脚本。
$.ajaxPrefilter( "json script", function( options ) { options.crossDomain = true;
});
以上是 Android WebView + AJAX本地文件 的全部内容, 来源链接: utcz.com/qa/401100.html