class WindowsJs { /// 点击监听 static String clickEventJs = ''' document.addEventListener("click", function (event) { var x = event.clientX; var y = event.clientY; var click = { "x": x, "y": y }; var value = { click: click }; // 发送消息 window.chrome.webview.postMessage(value); // window.chrome.webview.postMessage({"text":event.target.textContent,"end":event.target.textContent === "进入游戏"}); // 检查点击的元素是否有类名为 'btn' if (event.target.textContent === "进入游戏") { // 获取按钮上显示的文本内容 window.chrome.webview.postMessage({ "成功获取到btn": 1 }); // window.chrome.webview.postMessage({ "btn": event.target.textContent }); // 阻止默认的链接跳转行为 event.preventDefault(); var oldUrl = window.location.href; var classUrl = event.target.href; var str = oldUrl; var startIndex = str.indexOf('www.'); var endIndex = str.indexOf('/', startIndex); var url = str.substring(startIndex, endIndex); var newUrl = "https://" + url + "/game/"; // window.chrome.webview.postMessage({"元素地址": classUrl ,"旧地址":window.location.href ,"截取":url,"新地址": newUrl}); window.location.href = newUrl; } }); '''; /// 滚动监听 static String scrollEventJs = ''' // window.onscroll = function() { // // 获取垂直滚动位置 // var scrollTop = window.scrollY; // window.chrome.webview.postMessage({"scroll": 1 ,"y": scrollTop }); // }; // 轮询检查元素是否存在 // const checkExist = setInterval(function() { // const contentWrap = document.querySelector('content'); // const clList = document.querySelector('cl-list'); // console.log('轮询'); // if (contentWrap && clList) { // clearInterval(checkExist); // 停止轮询 // console.log('停止轮询'); // contentWrap.addEventListener('scroll', function() { // console.log('contentWrap position:', element.scrollTop); // }); // clList.addEventListener('scroll', function() { // console.log('clList position:', element.scrollTop); // }); // } // }, 500); // 每500毫秒检查一次 '''; /// 滚动到 static String scrollTo(int value){ return ''' window.scrollTo({ top: $value, behavior: 'smooth' // 可选,设置滚动行为为平滑滚动 }); '''; } /// 模拟点击 static String clickJs(int x, int y) { return 'document.elementFromPoint($x, $y).click();'; } /// 输入 static String inputJs(int value) { return ''' console.log('输入赋值'); var inputEvent = new Event('input', { bubbles: true, cancelable: true, }); var inputElement = document.querySelector(".bet-money"); inputElement.value = "$value"; inputElement.dispatchEvent(inputEvent); // var inputElements = document.querySelectorAll(".bet-money"); // inputElements.forEach(function(element) { // var inputEvent = new Event('input', { // bubbles: true, // cancelable: true, // }); // element.value = "$value"; // element.dispatchEvent(inputEvent); // }); // const contentWrap = document.querySelector('content'); // const clList = document.querySelector('cl-list'); // console.log(contentWrap, clList); '''; } /// 监听加载,在加载完成后缩放 static String onloadZoom(int zoom){ assert(zoom >= 1 && zoom <= 100, 'zoom 1 到 100'); return ''' window.onload = function () { var currentUrl = window.location.href; if (currentUrl.endsWith('game/')) { ${WindowsJs.zoom(zoom)} } }; '''; } /// 修改缩放 static String zoom(int zoom){ assert(zoom >= 1 && zoom <= 100, 'zoom 1 到 100'); return ''' document.body.style.zoom = "$zoom%"; '''; } static String message = 'window.chrome.webview.postMessage({x:3333});'; }