我正尝试在我的 Android 应用程序中呈现使用 jQueryMobile 创建的页面,但我需要在 webView 中以离线状态进行呈现。
为此,我开始复制我页面的 index.html 并将所有必需的资源直接带到我设备的内部存储中。然后我在我的设备的内部浏览器和 Chrome 应用程序中键入 file:///sdcard/index.html 加载它,网站显示得很好,有 jQuery 样式和所有。
然后我进入我的应用程序,那里有一个 webView,而这正是我实际需要呈现上述页面的地方。我使用 loadDataWithBaseURL() 加载页面(因为这是我最终需要做的),如下所示:
loadDataWithBaseURL("file:///android_asset/web/", html, "text/html", "UTF-8", null);
我将所有 Assets 保存在 Assets 文件夹的 Web 目录中。
问题是,如果我在没有 Assets 引用的情况下加载页面(通常只是调用 loadUrl),它会加载但显然没有样式或功能。当我将 Assets 引用调用 loadDataWithBaseURL 时,它确实正确地读取了 Assets 引用,但渲染卡在了 jqueryMobile 的旋转轮上,页面从未真正加载过。这是我看到的:
总结一下:
我使用 jQuery Mobile 创建了一个网站。这只是一个简单的html 具有 jQuery 样式的页面。
我已经为离线加载做好了准备。我打包了所需的 Assets
放入一个文件夹中,在 index.html 中我相对地引用了这些 Assets (例如 href="web/styles.css")。
如果我在没有连接的情况下在我的桌面浏览器中加载此页面,它 有效。
如果我在我的移动浏览器(Chrome 或内部浏览器)中加载此页面
一个),有效。
如果我加载此页面时没有我的 WebView 中的 Assets 引用, 有效(无需样式或图像等)
如果我在我的 WebView 中使用 Assets 引用加载此页面,它
不起作用,它卡在了纺车上。连通性不会影响该问题。
如果我删除引用 jQM 样式表的行,那么页面是 在没有样式的情况下加载,但图像已正确加载(因此 对 Assets 的引用是正确的)
请注意,由于我在 jQM 中完全禁用了 AJAX,因此一开始就不应该出现纺车:
<script>
$.mobile.ajaxEnabled = false;
</script>
奇怪的是 AFAIK 内部 Android web 浏览器和 webviews 共享同一个渲染器,所以我不知道这里会发生什么,而且由于它在常规浏览器上工作正常,我可以调试正在发生的事情。
作为引用,这是我定义 webView 的方式:
mWebView = (WebView) findViewById(R.id.webView);
WebSettings s = mWebView.getSettings();
s.setJavaScriptEnabled(true);
我有很多其他设置,但为了简化问题,我删除了它们,但问题仍然存在。
有什么建议吗?
PD。根据要求,发布 index.html 文件。这是最简单的例子,只是一个空索引。问题依然存在:
<!doctype html>
<html lang=es>
<head>
<meta charset="utf-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="format-detection" content="telephone=no" />
<meta name="HandheldFriendly" content="true" />
<meta name="MobileOptimized" content="320" />
<head>
<title>
My title
</title>
<script>
$.mobile.ajaxEnabled = false;
</script>
<script src="script/jquery/jquery-1.9.1.min.js"></script>
<script src="script/jquery/jquery.mobile-1.3.2.min.js"></script>
<link href="css/jquery.mobile-1.3.2.min.css" rel="stylesheet" media="screen" type="text/css" />
</head>
<body>
</body>
</html>
最佳答案
自己解决了。从 JellyBean 开始,webView 设置包括一个属性来禁用从文件资源加载,默认情况下它是禁用的。
从 Jelly 之前的设备运行我的应用程序工作正常,但我用于开发的两台设备都是基于 4.3 的。
我用下面的代码解决了这个问题,如果有人感兴趣的话:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
s.setAllowUniversalAccessFromFileURLs(true);
s.setAllowFileAccessFromFileURLs(true);
}
关于android - 从本地 Assets 加载时,jQuery Mobile 在 WebView 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19379392/
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI