web_synchronization_tool/lib/windows/windowsJs.dart

135 lines
3.9 KiB
Dart

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});';
}