今天在做一个关于webview的东西,其中网页中有flash,而当webview加载了这个网页之后无法显示这个flash,但是会留出一块空白的部分,于是加载了的这个页面会显得很难看,因此就想如何把这个flash隐藏。
想了很久也没想出办法,也没在webview设置中看到有隐藏flash的方法,于是就想到了使用js来进行操作。废话不多说,贴出具体代码,代码中说明很详细,希望能有用。
注意:需要添加网络访问权限
package com.example.webview;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MainActivity extends Activity {
//定义一个webview
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.webview);
//webview加载一个网页
webView.loadUrl("https://member.meizu.com/sso?appuri=https%3A%2F%2Fsyncweb.meizu.com%2Fc%2Floginout%2Flogin&useruri=%2Fbrowser%2Findex.jsp&sid=&service=syncweb&autodirct=true");
WebSettings settings = webView.getSettings();
//设置webview属性可以对js进行操作
settings.setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//在加载完成之后对网页中内容进行隐藏,这里我们隐藏了登录的按钮
webView.loadUrl("javascript:document.getElementById(\"login\").style.display=\"none\";");
产品有个需求,要在App中打开天猫购物的链接,并且要隐藏掉H5页面的某些内容,让用户只能浏览商品,而不能购买,这个就需要在Java代码中操作WebView,让H5页面加载完成后能够隐藏掉某些内容。
首先我们来看一下天猫购物的链接地址:https://market.m.taobao.com/apps/market/need/yxIndex.html...
h5加载完成时回调
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
view?.loadUrl("javascript:" + loadJs() + ";")
fun loadJs(): String {
var js = "var newscript = document.createElement(\"script\");"
有时候,我们用WebView加载的某些网页里面常常有广告,大大的影响了使用者的浏览效果,我们能不能去除呢? 答案当然是可以的,当然方法是偏门一点,是利用js把对应的广告块进行隐藏。。
document.querySelector('广告块的选择器').style.display="none";11
通过上面的js代码可以对某个元素进行隐藏,达到去除的目的,js 的代码解析
场景描述:
iOS 的 UINavigation Controller 导航到一个 Controller , 里面是 H5
决定采用 Navigation Bar 上面的返回按钮,抹去 H5 自带的返回按钮
解决: 注入脚本,配置 css
相关脚本:
var styleTag = document.createElement("style");
styleTag.textContent = 'element.class{;}';
document
1.浏览器可以查看
元素,找到那些不需要显示的
元素直接
隐藏掉2.JS代码:根据class名称获取div数组//编写 javaScript方法
String javascript = "javascript:function getClass(parent,sClass){" +
"var aEle=parent.getElementsByTagName('div');" +
问题描述:
在进行app开发时,我们会经常遇到webview加载一个网址的情况,但是仅仅是webview.loadUrl()并不能满足我们的需求,因为一般网页上面都有一个标题,,标题的颜色和我们的app风格可能整体都不太搭,这个时候该怎么办?让web端的朋友们专门写一个也是不太可能实现,这个时候都要自力更生了
解决思路:
利用js交互,将webview加载的URL的页面html做一些修改,例
Android WebView 是一个能够在 Android 应用程序中嵌入网页的组件,它可以开发出能够与 Web 页面进行交互的应用。其中与 Web 页面进行交互的一种方法是与 JavaScript 进行交互。下面简要解释一下 Android WebView 与 JS 交互的方式。
1. 加载本地 HTML 文件
在 Android WebView 中加载本地 HTML 文件时,需要使用 loadUrl() 方法加载。HTML 文件中的 JavaScript 可以通过 WebView 提供的 addJavascriptInterface() 方法注册为 Java 中的一个对象,然后在 Java 中调用该对象的方法,即可实现 JS 与 Java 的交互。
2. 加载远程 Web 页面
在 Android WebView 中加载远程 Web 页面时,需要添加 WebViewClient 和 WebChromeClient,分别是用来管理 WebView 的网络请求和处理页面上的 JavaScript 弹窗等请求。
在远程 Web 页面上,JS 代码可以通过 WebView 提供的 addJavascriptInterface() 方法注册为 Java 中的一个对象,然后在 Java 中调用该对象的方法,即可实现 JS 与 Java 的交互。
同时,在 Android 中处理 JS 的事件需要通过 JavaScriptInterface 向 WebView 注册一个映射对象,来实现 JS、Java 相互调用的机制,静态 HTML 文件是通过 WebView 中的 evaluateJavascript() 方法来调用 JS,来实现双向通信和数据交互。
总结来说,Android WebView 与 JS 交互的方式主要是通过 WebView 提供的 addJavascriptInterface() 方法注册为 Java 中的一个对象,然后在 Java 中调用该对象的方法,来实现 JS 和 Java 的交互。同时,JS 也可以通过 WebView 的 evaluateJavascript() 方法来调用 Java 中的方法,实现双向通信和数据交互。