mirror of
https://github.com/BTMuli/TeyvatGuide.git
synced 2025-12-14 09:38:13 +08:00
✨ 添加模拟触摸,将鼠标事件转为触摸事件
This commit is contained in:
@@ -2,16 +2,27 @@
|
|||||||
//! @desc 客户端模块,负责操作米游社客户端
|
//! @desc 客户端模块,负责操作米游社客户端
|
||||||
//! @since Beta v0.3.9
|
//! @since Beta v0.3.9
|
||||||
|
|
||||||
use tauri::{AppHandle, CustomMenuItem, Manager, Menu, WindowBuilder, WindowUrl};
|
use tauri::{AppHandle, CustomMenuItem, Manager, Menu, Submenu, WindowBuilder, WindowUrl};
|
||||||
use url::Url;
|
use url::Url;
|
||||||
|
|
||||||
|
// 创建子菜单-工具
|
||||||
|
fn create_utils_menu() -> Menu {
|
||||||
|
let retry_bridge = CustomMenuItem::new("retry".to_string(), "重试桥接");
|
||||||
|
let mock_touch = CustomMenuItem::new("mock_touch".to_string(), "模拟触摸");
|
||||||
|
return Menu::new().add_item(retry_bridge).add_item(mock_touch);
|
||||||
|
}
|
||||||
|
|
||||||
// 创建米游社客户端菜单
|
// 创建米游社客户端菜单
|
||||||
fn create_mhy_menu() -> Menu {
|
fn create_mhy_menu() -> Menu {
|
||||||
let top = CustomMenuItem::new("top".to_string(), "置顶");
|
let top = CustomMenuItem::new("top".to_string(), "置顶");
|
||||||
let cancel_top = CustomMenuItem::new("cancel_top".to_string(), "取消置顶");
|
let cancel_top = CustomMenuItem::new("cancel_top".to_string(), "取消置顶");
|
||||||
let open_post = CustomMenuItem::new("open_post".to_string(), "打开帖子");
|
let open_post = CustomMenuItem::new("open_post".to_string(), "打开帖子");
|
||||||
let retry_bridge = CustomMenuItem::new("retry".to_string(), "重试");
|
let utils_menu = Submenu::new("工具".to_string(), create_utils_menu());
|
||||||
return Menu::new().add_item(top).add_item(cancel_top).add_item(open_post).add_item(retry_bridge);
|
return Menu::new()
|
||||||
|
.add_item(top)
|
||||||
|
.add_item(cancel_top)
|
||||||
|
.add_item(open_post)
|
||||||
|
.add_submenu(utils_menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取米游社客户端入口地址
|
// 获取米游社客户端入口地址
|
||||||
@@ -112,6 +123,16 @@ pub async fn create_mhy_client(handle: AppHandle, func: String, url: String) {
|
|||||||
})()"#;
|
})()"#;
|
||||||
window.eval(&execute_js).ok().unwrap();
|
window.eval(&execute_js).ok().unwrap();
|
||||||
}
|
}
|
||||||
|
"mock_touch" => {
|
||||||
|
let window = handle.get_window("mhy_client").unwrap();
|
||||||
|
let execute_js = r#"javascript:(async function(){
|
||||||
|
const arg = {
|
||||||
|
method: 'teyvat_touch',
|
||||||
|
}
|
||||||
|
await window.__TAURI__.event.emit('post_mhy_client',JSON.stringify(arg));
|
||||||
|
})()"#;
|
||||||
|
window.eval(&execute_js).ok().unwrap();
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -287,6 +287,87 @@ class TGClient {
|
|||||||
await this.loadJSBridge();
|
await this.loadJSBridge();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case "teyvat_touch": {
|
||||||
|
const executeJS = `javascript:(() => {
|
||||||
|
// 鼠标移动监听
|
||||||
|
const mouseMoveListener = (e) => {
|
||||||
|
console.log("mouseMoveListener");
|
||||||
|
const touch = new Touch({
|
||||||
|
identifier: Date.now(),
|
||||||
|
target: e.target,
|
||||||
|
clientX: e.clientX,
|
||||||
|
clientY: e.clientY,
|
||||||
|
screenX: e.screenX,
|
||||||
|
screenY: e.screenY,
|
||||||
|
pageX: e.pageX,
|
||||||
|
pageY: e.pageY
|
||||||
|
});
|
||||||
|
const touchEvent = new TouchEvent("touchmove", {
|
||||||
|
cancelable: true,
|
||||||
|
bubbles: true,
|
||||||
|
touches: [touch],
|
||||||
|
targetTouches: [touch],
|
||||||
|
changedTouches: [touch]
|
||||||
|
});
|
||||||
|
console.log(touchEvent);
|
||||||
|
e.target.dispatchEvent(touchEvent);
|
||||||
|
};
|
||||||
|
// 鼠标抬起监听
|
||||||
|
const mouseUpListener = (e) => {
|
||||||
|
console.log("mouseUpListener");
|
||||||
|
const touch = new Touch({
|
||||||
|
identifier: Date.now(),
|
||||||
|
target: e.target,
|
||||||
|
clientX: e.clientX,
|
||||||
|
clientY: e.clientY,
|
||||||
|
screenX: e.screenX,
|
||||||
|
screenY: e.screenY,
|
||||||
|
pageX: e.pageX,
|
||||||
|
pageY: e.pageY
|
||||||
|
});
|
||||||
|
const touchEvent = new TouchEvent("touchend", {
|
||||||
|
cancelable: true,
|
||||||
|
bubbles: true,
|
||||||
|
touches: [touch],
|
||||||
|
targetTouches: [touch],
|
||||||
|
changedTouches: [touch]
|
||||||
|
});
|
||||||
|
console.log(touchEvent);
|
||||||
|
e.target.dispatchEvent(touchEvent);
|
||||||
|
// 鼠标抬起后,移除对于鼠标移动和鼠标抬起的监听
|
||||||
|
document.removeEventListener("mousemove", mouseMoveListener);
|
||||||
|
document.removeEventListener("mouseup", mouseUpListener);
|
||||||
|
};
|
||||||
|
const mouseDownListener = (e) => {
|
||||||
|
console.log("mouseDownListener");
|
||||||
|
const touch = new Touch({
|
||||||
|
identifier: Date.now(),
|
||||||
|
target: e.target,
|
||||||
|
clientX: e.clientX,
|
||||||
|
clientY: e.clientY,
|
||||||
|
screenX: e.screenX,
|
||||||
|
screenY: e.screenY,
|
||||||
|
pageX: e.pageX,
|
||||||
|
pageY: e.pageY
|
||||||
|
});
|
||||||
|
const touchEvent = new TouchEvent("touchstart", {
|
||||||
|
cancelable: true,
|
||||||
|
bubbles: true,
|
||||||
|
touches: [touch],
|
||||||
|
targetTouches: [touch],
|
||||||
|
changedTouches: [touch]
|
||||||
|
});
|
||||||
|
console.log(touchEvent);
|
||||||
|
e.target.dispatchEvent(touchEvent);
|
||||||
|
// 鼠标按下后,监听鼠标移动和鼠标抬起事件
|
||||||
|
document.addEventListener("mousemove", mouseMoveListener);
|
||||||
|
document.addEventListener("mouseup", mouseUpListener);
|
||||||
|
};
|
||||||
|
document.addEventListener("mousedown", mouseDownListener);
|
||||||
|
})()`;
|
||||||
|
await invoke("execute_js", { label: "mhy_client", js: executeJS });
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
console.warn(`[customCallback] ${arg.method}`);
|
console.warn(`[customCallback] ${arg.method}`);
|
||||||
}
|
}
|
||||||
@@ -524,8 +605,8 @@ class TGClient {
|
|||||||
}
|
}
|
||||||
const executeJS = `javascript:(function(){
|
const executeJS = `javascript:(function(){
|
||||||
var domain = window.location.host;
|
var domain = window.location.host;
|
||||||
document.cookie = "cookie_token=${user.cookie.cookie_token};domain=." + domain + ";path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT;
|
document.cookie = "cookie_token=${user.cookie.cookie_token};domain=" + domain + ";path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT;
|
||||||
document.cookie = "ltoken=${user.cookie.ltoken};domain=." + domain + ";path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT;
|
document.cookie = "ltoken=${user.cookie.ltoken};domain=" + domain + ";path=/;expires=Fri, 31 Dec 9999 23:59:59 GMT;
|
||||||
})();`;
|
})();`;
|
||||||
console.info(`[getCookieToken] ${executeJS}`);
|
console.info(`[getCookieToken] ${executeJS}`);
|
||||||
await invoke("execute_js", { label: "mhy_client", js: executeJS });
|
await invoke("execute_js", { label: "mhy_client", js: executeJS });
|
||||||
|
|||||||
Reference in New Issue
Block a user