先看文末再考虑这个方案合适不合适你
理论让来说应该是 web前端来做 是由生产方来处理的(这个H5页面是谁写的谁来做)不要说 android能处理这个问题 为什么你ios不能处理 或者 ios能处理 为什么你android 不能处理。
通过请求的userAgent 就可以判断请求方的 类型 因为 android 的 webView ios的webView 类似组件 肯定是有一个区分的
参考博客:https://blog.csdn.net/qq_32452623/article/details/52214460
下面的图也是借用上面博客里面的

我们通过 右键查看网页源码 就可以看到上面的类似的图的 所以说 html 的上下文 document 我这是这样认为了 就像android中的context一样
document.getElementsByTagName("") 这个可以拿标签
document.getElementsByClassName("") 可以拿标签上的class 属性
所以通过上面的 document的解释 我们是可以获取一个链接里面的指定标签的
WebView webView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setUseWideViewPort(true);
webSettings.setLoadWithOverviewMode(true);
webView.loadUrl("http://www.lymidas.com/Home/DataCenter?currentId=1");
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//编写 javaScript方法
String javascript = "javascript:function hideOther() {" +
"document.getElementsByTagName('body')[0].innerHTML;" +
"document.getElementsByTagName('div')[0].style.display='none';" +
"document.getElementsByTagName('div')[3].style.display='none';" +
"document.getElementsByClassName('dropdown')[0].style.display='none';" +
"document.getElementsByClassName('min')[0].remove();" +
"var divs = document.getElementsByTagName('div');" +
"var lastDiv = divs[divs.length-1];" +
"lastDiv.remove();" +
"document.getElementsByClassName('showme')[0].remove();" +
"document.getElementsByClassName('nei-t3')[1].remove();}";
//创建方法
view.loadUrl(javascript);
//加载方法
view.loadUrl("javascript:hideOther();");
}
});
https://github.com/youlookwhat/ByWebView
byWebView = ByWebView
.with(this)
.setOnByWebClientCallback(object : OnByWebClientCallback() {
override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
super.onPageStarted(view, url, favicon)
}
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
// https://blog.csdn.net/qq_32452623/article/details/52214460 //处理办法
//编写 javaScript方法
// val javascript = "javascript:function hideOther() {" +
// "var headers = document.getElementsByTagName('head');" +
// "var lastHeader = headers[headers.length-1];" +
// "lastHeader.remove();" +
// "var divs = document.getElementsByTagName('nav');" +
// "var lastDiv = divs[divs.length-1];" +
// "lastDiv.remove();" +
// "}"
// //创建方法
// view!!.loadUrl(javascript)
// //加载方法
// view!!.loadUrl("javascript:hideOther();")
}
override fun isOpenThirdApp(url: String?): Boolean {
return super.isOpenThirdApp(url)
}
override fun onReceivedSslError(
view: WebView?,
handler: SslErrorHandler?,
error: SslError?
): Boolean {
return super.onReceivedSslError(view, handler, error)
}
})
.setWebParent(web_view_container_common, LinearLayoutCompat.LayoutParams(-1, -1))
.useWebProgress("#ffb6cf", "#ff0000", 2) // 进度条渐变色(开始颜色,结束颜色,高度)
.loadUrl(urlStr)
在 onPageFinished里面操作就ok了



Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
我试图使用yard记录一些Ruby代码,尽管我所做的正是所描述的here或here#@param[Integer]thenumberoftrials(>=0)#@param[Float]successprobabilityineachtrialdefinitialize(n,p)#initialize...end虽然我仍然得到这个奇怪的错误@paramtaghasunknownparametername:the@paramtaghasunknownparametername:success然后生成的html看起来很奇怪。我称yard为:$yarddoc-mmarkdown我做错了什么?
我正在尝试修改当前依赖于定义为activeresource的gem:s.add_dependency"activeresource","~>3.0"为了让gem与Rails4一起工作,我需要扩展依赖关系以与activeresource的版本3或4一起工作。我不想简单地添加以下内容,因为它可能会在以后引起问题:s.add_dependency"activeresource",">=3.0"有没有办法指定可接受版本的列表?~>3.0还是~>4.0? 最佳答案 根据thedocumentation,如果你想要3到4之间的所有版本,你可以这
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat
我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植
我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or
我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s
我有一个div,它根据表单是否正确提交而改变。我想知道是否可以检查类的特定元素?开始元素看起来像这样。如果输入不正确,添加错误类。 最佳答案 试试这个:browser.div(:id=>"myerrortest").class_name更多信息:http://watir.github.com/watir-webdriver/doc/Watir/HTMLElement.html#class_name-instance_method另一种选择是只查看具有您期望的类的div是否存在browser.div((:id=>"myerrortes