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

回到顶部