Android WebView + AJAX本地文件

近战

我有一个android webview加载我本地拥有的网站。我不是自己构建的,对标记,js等的控制很少。

问题:网站的某些部分使用jquery $ .ajax-gets获取HTML以模态显示,并且我认为我遇到了跨域问题(如果我在台式机上本地测试该网站,则会得到相同的来源-警告,我的来源是“ null”),即由于某种原因,本地js无法ajax获取资源文件夹中的其他本地文件,因为底层浏览器认为这些来自不同的来源。我已经阅读了有关该内容的所有内容,但似乎没有任何区别。在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吗?请注意,我只有本地文件可以使用,正常使用情况是使用该应用程序时平板电脑未连接到互联网,因此任何外部呼叫都无法进行。

njzk2

您需要允许跨域。在此示例中,跨域允许用于json值和脚本。

$.ajaxPrefilter( "json script", function( options ) {
    options.crossDomain = true;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在webView android中加载本地html文件

来自分类Dev

Android WebView无法加载本地HTML文件

来自分类Dev

在WebView Android中加载本地HTML文件

来自分类Dev

Android WebView无法加载本地HTML文件

来自分类Dev

Android WebView本地存储

来自分类Dev

Android:WebView可提高本地html文件的加载速度

来自分类Dev

Android WebView按钮输入文件

来自分类Dev

Android Webview输入类型文件

来自分类Dev

使用Android Webview的PouchDB本地存储

来自分类Dev

Android 11上的WebView-不显示本地图像文件

来自分类Dev

Android-在WebView中选择“文件”按钮

来自分类Dev

如何从Webview Android下载文件?

来自分类Dev

如何从Android中的片段Webview上传文件?

来自分类Dev

在Android Webview中下载文件

来自分类Dev

Android WebView不会加载html文件

来自分类Dev

如何从Android中的片段WebView上传文件?

来自分类Dev

使用Android Webview下载文件

来自分类Dev

带有 webview 的 Android 下载文件

来自分类Dev

Android WebView 不加载 HTML 文件

来自分类Dev

在 Webview 4.2.2 (Android Studio) 中选择文件

来自分类Dev

Android Webview

来自分类Dev

Android Webview

来自分类Dev

使用Android WebView中的本地存储拒绝访问

来自分类Dev

Android-在WebView中显示本地图像

来自分类Dev

将图像从本地android存储加载到WebView

来自分类Dev

如何获取Android WebView本地化其错误页面?

来自分类Dev

在android webview中输入HTML文件(android 4.4,kitkat)

来自分类Dev

Android上的react-native-webview无法加载使用ERR_ACCESS_DENIED保存在缓存目录中的本地文件

来自分类Dev

javafx webview加载本地CSS文件