链接参考:https://wwz.lanzn.com/ih5W323dyz1e
链接参考2:https://wwz.lanzn.com/iXmx823dz0la
--浏览器控件讲解
function 状态栏高度()
if Build.VERSION.SDK_INT >= 19 then
resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android")
return activity.getResources().getDimensionPixelSize(resourceId)
else
return 0
end
end
layout=--全屏框架
{
LinearLayout;--线性控件
orientation='vertical';--布局方向
layout_width='fill';--布局宽度
layout_height='fill';--布局高度
{
LuaWebView;--浏览器控件
layout_marginTop=状态栏高度(),
layout_width='fill';--浏览器宽度
layout_height='fill';--浏览器高度
id='webView';--控件ID
};
}
activity.setContentView(loadlayout(layout))
import "android.webkit.WebView"
webView.addJavascriptInterface({},"JsInterface")--漏洞封堵代码
--常用API
webView.loadUrl("https://longlong233.github.io/aluaidiots/")--加载网页
--webView.loadUrl("file:///storage/sdcard0/index.html")--加载本地文件
--webView.loadUrl("view-source:"..webView.url)--查看网页源码
--webView.evaluateJavascript([[JavaScript代码]],nil)--加载JS代码
--[[
webView.requestFocusFromTouch()--设置支持获取手势焦点
--webView.getSettings().setForceDark(WebSettings.FORCE_DARK_ON)--设置深色模式
webView.getSettings().setSupportZoom(true); --支持网页缩放
webView.getSettings().setBuiltInZoomControls(true); --支持缩放
webView.getSettings().setLoadWithOverviewMode(true);--缩放至屏幕的大小
webView.getSettings().setDisplayZoomControls(false); --隐藏自带的右下角缩放控件
webView.getSettings().setLoadsImagesAutomatically(true);--图片自动加载
webView.getSettings().setUseWideViewPort(true) --图片自适应
webView.setHorizontalScrollBarEnabled(false)--设置是否显示水平滚动条
webView.setVerticalScrollbarOverlay(true)--设置垂直滚动条是否有叠加样式
webView.setScrollBarStyle(webView.SCROLLBARS_OUTSIDE_OVERLAY)--设置滚动条的样式
webView.getSettings().setDomStorageEnabled(true); --dom储存数据
webView.getSettings().setDatabaseEnabled(true); --数据库
webView.getSettings().setAppCacheEnabled(true); --启用缓存
webView.getSettings().setCacheMode(webView.getSettings().LOAD_CACHE_ELSE_NETWORK);--设置缓存加载方式
webView.getSettings().setAllowFileAccess(true);--允许访问文件
webView.getSettings().setSaveFormData(true); --保存表单数据,就是输入框的内容,但并不是全部输入框都会储存
webView.getSettings().setAllowContentAccess(true); --允许访问内容
webView.getSettings().setJavaScriptEnabled(true); --支持js脚本
webView.getSettings().supportMultipleWindows() --设置多窗口
webView.setLayerType(View.LAYER_TYPE_HARDWARE,nil);--硬件加速
webView.getSettings().setPluginsEnabled(true)--支持插件
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); --//支持通过JS打开新窗口
webView.getSettings().setUserAgentString('Mozilla/5.0 (Linux; Android 10.1.2; Build/NJH47F) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.109 Safari/537.36')--设置浏览器标识(UA)
webView.getSettings().setDefaultTextEncodingName("utf-8")--设置编码格式
webView.getSettings().setTextZoom(100)--设置字体大小:100表示正常,120表示文字放大1.2倍
webView.getSettings().setAcceptThirdPartyCookies(true) --接受第三方cookie
webView.getSettings().setSafeBrowsingEnabled(true)--安全浏览
webView.getSettings().setGeolocationEnabled(true);--启用地理定位
]]
--webView.goForward()--网页前进
--webView.goBack()--网页后退
--webView.reload()--刷新网页
--webView.stopLoading()--停止加载网页
--webView.getTitle()--获取网页标题
--webView.getUrl()--获取当前Url
--webView.getFavicon()--获得当前网页的图标
--webView.getProgress()--获得网页加载进度
--状态监听
webView.setWebViewClient{
shouldOverrideUrlLoading=function(view,url)
--Url即将跳转
end,
onPageStarted=function(view,url,favicon)
--网页即将加载
end,
onPageFinished=function(view,url)
--网页加载完成
end,
onReceivedError=function(view,code,des,url)
--网页加载失败
end,
onLoadResource=function(view,url)
--加载页面资源时
end,
shouldInterceptRequest=function(view,url)
--加载url制定的资源
end,
onReceivedSslError=function(view,handler,err)
--加载SSL证书错误时
end,
}
webView.setWebChromeClient(luajava.override(luajava.bindClass "android.webkit.WebChromeClient",{
onReceivedTitle=function(super,view,title)
--获取到网页标题
end,
onReceivedIcon=function(super,view,title)
--获取到网页图标
end,
onProgressChanged=function(view,progress)
--页面加载进度
end,
}))
webView.setDownloadListener{
onDownloadStart=function(url,userAgent,contentDisposition,mimetype,contentLength)
--即将下载文件时(链接,UA,处理,类型,大小)
local 大小=string.format("%.2f",contentLength/1048576).."MB"
end,
}