日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android webview js 失效,Android WebView注入JQuery、JS脚本及执行无效的问题解决

發布時間:2023/12/4 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android webview js 失效,Android WebView注入JQuery、JS脚本及执行无效的问题解决 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在項目中遇到JQuery注入后,執行無效的問題。

我們知道必須在網頁加載完成后,也就是在onPageFinished()方法被調用后才能執行被注入的JS。

但是在有些手機上并不能成功執行,我的解決方案是設置一秒延遲后注入JS,成功了!why,i dont know...

WebView注入JS的封裝

JSUtil.java

import android.app.Activity;

import android.webkit.ValueCallback;

import android.webkit.WebView;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.InputStream;

public class JSUtil {

public static JSUtil instance;

private WebView webview;

private String juqueryContent;

public static JSUtil getInstance(WebView webView) {

if (instance == null) {

instance = new JSUtil(webView);

} else {

instance.webview = webView;

}

return instance;

}

private JSUtil(WebView webView) {

webview = webView;

try {

InputStream in = webView.getContext().getAssets().open("jquery.min.js");

byte buff[] = new byte[1024];

ByteArrayOutputStream fromFile = new ByteArrayOutputStream();

do {

int numread = in.read(buff);

if (numread <= 0) {

break;

}

fromFile.write(buff, 0, numread);

} while (true);

juqueryContent = fromFile.toString();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 注入jquery

*/

public void injectJquery(final InjectCallback injectCallback) {

webview.loadUrl("javascript:" + juqueryContent);

webview.postDelayed(new Runnable() {

@Override

public void run() {

injectCallback.onSuccess();

}

},1000);

}

interface InjectCallback {

void onSuccess();

void onFail();

}

/**

* 原生設置dom值

*/

public void js_dom_setValueById(String id, String value) {

String js = "javascript:document.getElementById('" + id + "').value = '" + value + "'";

loadJs(js);

}

/**

* 原生設置dom值

*/

public void js_dom_setValueByName(String name, String value) {

String js = "javascript:document.getElementsByName('" + name + "').value = '" + value + "'";

loadJs(js);

}

/**

* js原生dom點擊(通過id查找)

*/

public void js_dom_click_byId(String id) {

String js = "javascript:document.getElementById('" + id + "').click();";

webview.evaluateJavascript(js, null);

}

/**

* js原生dom點擊(通過類查找)

*/

public void js_dom_click_byClass(String cls) {

String js = "javascript:document.getElementsByClassName('" + cls + "').click();";

webview.evaluateJavascript(js, null);

}

/**

* jquerydom點擊(通過id查找)

*/

public void jquery_dom_click_byId(String id) {

String js = "var newscript = document.createElement(\"script\");";

js += "newscript.src=\"https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js\";";

js += "document.body.appendChild(newscript);";

js += "newscript.οnlοad=function(){$('#" + id + "').click();};";

webview.evaluateJavascript(js, null);

}

/**

* jquery腳本執行

*/

public void jquery_dom(String jscontent) {

String js = "var newscript = document.createElement(\"script\");";

js += "newscript.src=\"https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js\";";

js += "document.body.appendChild(newscript);";

js += "newscript.οnlοad=function(){" + jscontent + "};";

webview.evaluateJavascript(js, null);

}

/**

* jquerydom點擊(通過類查找)

*/

public void jquery_dom_click_byClass(String cls) {

String js = "var newscript = document.createElement(\"script\");";

js += "newscript.src=\"https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js\";";

js += "document.body.appendChild(newscript);";

js += "newscript.οnlοad=function(){$('." + cls + "').click();};";

webview.evaluateJavascript(js, null);

}

/**

* jquery設置dom值

*/

public void jquery_dom_setValue(String id, String value) {

String js = "var newscript = document.createElement(\"script\");";

js += "newscript.src='https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js';";

js += "document.body.appendChild(newscript);";

js += "newscript.οnlοad=function(){$('#" + id + "').val('" + value + "');};";

webview.evaluateJavascript(js, null);

}

}

執行注入

webview.setWebViewClient(new WebViewClient() {

@Override

public boolean shouldOverrideUrlLoading(WebView view, String url) {

LogUtil.logD("當前的url:"+url);

view.loadUrl(url);

return true;

}

@Override

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

super.onReceivedError(view, errorCode, description, failingUrl);

LogUtil.logE(errorCode + ": " + description);

webview.loadUrl("file:///android_asset/404.html");

}

@Override

public void onPageStarted(WebView view, String url, Bitmap favicon) {

super.onPageStarted(view, url, favicon);

LogUtil.logD("開始加載網頁:" + url);

if (!dialog.isShowing()) {

dialog.show();

}

}

@Override

public void onPageFinished(WebView view, final String url) {

super.onPageFinished(view, url);

dialog.dismiss();

LogUtil.logD("加載完成 URL:" + url);

webview.postDelayed(new Runnable() {

@Override

public void run() {

JSUtil.getInstance(webview).injectJquery(new JSUtil.InjectCallback() {

@Override

public void onSuccess() {

LogUtil.logD("執行登錄:點擊首頁登錄");

webview.evaluateJavascript("var link=$('#nav-logobar-greeting').attr('href');if(link){window.location=link;}else{$('#gwm-SignIn-button').click();}", null);

}

@Override

public void onFail() {

}

});

}

}, 1000);

}

});

注意上面的onPageFinished方法中延遲操作,如果不加這個延遲,webview.evaluateJavascript根本無法執行(找不到“$定義”)

總結

以上是生活随笔為你收集整理的android webview js 失效,Android WebView注入JQuery、JS脚本及执行无效的问题解决的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91夜色| 日韩一级免费看 | 欧美成人日韩 | 无罩大乳的熟妇正在播放 | 三女警花合力承欢猎艳都市h | 久久久成人免费视频 | 精品一区二区三区免费 | 久久午夜精品 | 亚洲黄色激情 | av青青草| 国产真人无遮挡作爱免费视频 | 国产第一页在线观看 | 欧洲成人综合 | 亚洲自拍偷拍一区二区 | 午夜精产品一区二区在线观看的 | 激情小说激情视频 | 欧美精品在线一区二区 | 高跟肉丝丝袜呻吟啪啪网站av | 女人做爰全过程免费观看美女 | 狠狠干青青草 | 涩涩在线看 | 欧美性猛交xxxx偷拍洗澡 | www.欧美| 免费视频亚洲 | 91av一区二区三区 | 天天人人精品 | 好吊日在线观看 | 亚洲天堂第一区 | 制服丝袜第一页在线观看 | 天堂中文在线资 | ,亚洲人成毛片在线播放 | 亚洲精品在线观看网站 | 日本人妻丰满熟妇久久久久久 | 中文字幕手机在线视频 | www.黄色国产| 亚洲精品一区二区三区蜜臀 | 亚洲爱视频 | 色老头综合网 | 麻豆免费电影 | 免费黄色短片 | 久久久久99精品成人片 | 成人91网站 | 中文字幕美女 | yjizz视频网 国产乱人对白 | 亚洲精品图区 | 亚洲国产精品一区 | 新婚之夜玷污岳丰满少妇在线观看 | 国产一区二区三区久久 | 97超碰碰 | 99久久久无码国产精品 | 国产污污在线观看 | 国产第一页在线播放 | 网站黄在线 | 黄网站免费大全入口 | av加勒比 | 国产精品欧美综合亚洲 | 国产成人综合欧美精品久久 | 91香蕉视频在线观看免费 | 国产在成人精品线拍偷自揄拍 | 国产av无码专区亚洲精品 | 欧美性猛交xxx乱大交3蜜桃 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 人妻av一区二区三区 | 欧美理伦片在线播放 | av网站大全在线 | 国产尤物视频在线 | 国产有码视频 | 午夜精品视频 | 无码国产精品一区二区高潮 | www.久久伊人 | 青青草免费在线观看 | 最近国语视频在线观看免费播放 | 青春草国产视频 | 中文人妻一区二区三区 | 一级成人免费视频 | 69精品人人 | 三上悠亚久久 | 一级女性全黄久久生活片免费 | 亚洲av日韩av不卡在线观看 | 久久六| 欧美乱轮| 成人试看120秒体验区 | 国产精品中文字幕在线观看 | 国产 日韩 欧美 在线 | xxxx18日本| 香蕉视频入口 | 四川话毛片少妇免费看 | 日韩二区在线 | 一区二区三区国产 | 日韩一区二区三区视频在线观看 | 国内少妇精品 | 日本少妇xxxx动漫 | 小香蕉av| 久久精品色妇熟妇丰满人妻 | 在线不卡的av | 久久综合加勒比 | 无码人妻丰满熟妇区96 | 加勒比波多野结衣 | 少妇精品高潮欲妇又嫩中文字幕 |