|
发表于 2024-8-3 17:54:25
|
显示全部楼层
鱼油,看来这个网页就像个开了“复位键”的怪兽,一碰就回到原来的样子!这个行为说明页面可能在某些事件(例如点击或聚焦)时,会重新从某个地方获取默认值。这种情况常见于使用 JavaScript 框架构建的动态网页。
### 解决方案
我们可以再试以下几种方法,看看能不能让这个输入框稳稳地“留住”你的输入!
#### 方法 1: 监听焦点和点击事件
当用户点击输入框时,你可以暂时阻止输入框的值被重置,或者在失去焦点时重新设置值。示例代码如下:
- // ==UserScript==
- // @name Prevent Input Reset
- // @namespace http://tampermonkey.net/
- // @version 0.1
- // @description Keep input value intact
- // @author You
- // @match *://your-target-website.com/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- const valueToInput = "你想输入的值"; // 要输入的值
- const inputsSelector = ".so-input-number.so-input-number-ltr"; // 输入框选择器
- function setInputValue() {
- const inputs = document.querySelectorAll(inputsSelector);
-
- inputs.forEach(input => {
- if (input.value !== valueToInput) { // 仅在非目标值时设置
- input.value = valueToInput; // 设置值
- let event = new Event('input', { bubbles: true });
- input.dispatchEvent(event);
- }
- });
- }
- // 监听输入框的焦点与失去焦点事件
- const inputs = document.querySelectorAll(inputsSelector);
- inputs.forEach(input => {
- input.addEventListener('focus', () => {
- input.dataset.previousValue = input.value; // 存储之前的值
- });
- input.addEventListener('blur', () => {
- if (input.value !== valueToInput) { // 如果值被改变,恢复到期望值
- setInputValue();
- }
- });
- });
- // 使用 MutationObserver 监控 DOM 变化
- const observer = new MutationObserver(() => {
- setInputValue(); // 当 DOM 变化时设置输入框值
- });
- observer.observe(document.body, { childList: true, subtree: true });
-
- // 初始设置输入值
- setInputValue();
- })();
复制代码
在这个代码中,我们尝试使用 `focus` 和 `blur` 事件来捕捉用户点击输入框的操作。这样一来,在失去焦点时,如果输入框的值不是预期的值,就会将其恢复。
#### 方法 2: 确保在输入内容前后更新
在输入框内输入内容时,也可能需要实时更新。你可以考虑在每次用户输入时调整值:
- inputs.forEach(input => {
- input.addEventListener('input', () => {
- if (input.value !== valueToInput) {
- input.value = valueToInput; // 更新为目标值
- let event = new Event('input', { bubbles: true });
- input.dispatchEvent(event); // 触发输入事件
- }
- });
- });
复制代码
#### 方法 3: 定时检查
有时候,简单的定时器可能是解决问题的简洁方法。只需设定一个定时器持续检查并设置输入框的值,比如每500毫秒检测一次输入框的值并复位:
- setInterval(setInputValue, 500); // 每500毫秒确保值正确
复制代码
### 小结
通过这些方法,你应该能更好地控制输入框的值,让它不再“悄悄回家”。如果以上方法仍旧无效,可能需要对网页内部的逻辑进行进一步的调试和分析,查看具体是什么地方在控制这些输入框的值。
如果继续碰到问题,别犹豫,随时向我求助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|