请问有没有办法判断是否对某一网页元素进行了操作?

使用问题 · 821 次浏览
blanka 创建于 2023-10-25 17:56

比如用户点击了一个超链接,或者使一个文本框变为焦点,这样的场景能不能被识别呢?想通过用户的行动来影响动作的执行内容


回复内容
CL 2023-10-25 20:14
#1

一般没有办法判断是不是做过什么行为,但是可能可以判断当前元素的状态,比如通过js获取某个元素是不是有焦点之类的。


blanka 回复 CL 2023-10-26 02:10 :

谢谢,可惜我的编程基础只有自学的python……

blanka 回复 CL 2023-10-27 16:26 :

我在chatgpt上问到的js代码,直接在浏览器调试可以正常运行,但使用quicker运行脚本时提示:

Uncaught TypeError: Cannot read properties of null (reading 'addEventListener')

请问这是怎么回事呢?

代码如下:

var captchaBtn = document.querySelector('.captcha-btn');
var isClicked = false;

function checkButtonClick() {
  if (isClicked) {
    // 按钮已被点击,执行相应操作
    console.log('按钮已被点击!');
    // 返回相应的值
    return true;
  } else {
    // 按钮未被点击,继续检查
    setTimeout(checkButtonClick, 10000); // 每100毫秒检查一次
  }
}

captchaBtn.addEventListener('click', function() {
  isClicked = true;
});

// 开始检查按钮点击
checkButtonClick();

阿泽同学 2023-10-25 22:55
#2

可以循环获取控件文本是否发生变化,从而判断用户是否执行点击操作

blanka 回复 阿泽同学 2023-10-26 02:11 :

谢谢,文本框控件确实可以这样,但按钮控件就无能为力了

阿泽同学 回复 blanka 2023-10-26 07:25 :
换个思路,看看点了按钮之后 页面的结果有没有发生变化
blanka 回复 阿泽同学 2023-10-26 23:34 :

一开始也是这样想的,但一个是确实没有捕捉到变化,第二个是这样就需要对每个特定的页面进行适配,太麻烦啦

阿泽同学 回复 blanka 2023-10-27 07:25 :

希望你找到好的解决方法告诉我一下

blanka 回复 阿泽同学 2023-12-08 01:59 :

调了下chatgpt的好像可以用了https://getquicker.net/Sharedaction?code=c039bbc5-dfb1-48bc-d6dd-08dbf7217f2d

这个是根据按钮的css选择器来确定监控对象的,xpath的没研究

运营:秋风 2023-10-27 09:53
#3

用js可以实现,我一般用来判断 鼠标点击网页之后,然后自动激活Quicker动作,并且传入 点击哪个元素.从而实现交互功能. 

代码发给你,你自己研究把. 需要时间

$$// 定义点击事件处理函数的字典
const xpathHandlers = {
{js监控XPath代码}
};

// 添加点击事件监听器函数
function addClickEventListeners() {
  Object.entries(xpathHandlers).forEach(([xpath, handler]) => {
    const targetButton = document.evaluate(
      xpath,
      document,
      null,
      XPathResult.FIRST_ORDERED_NODE_TYPE,
      null
    ).singleNodeValue;

    if (targetButton) {
      targetButton.addEventListener('click', handler);
    }
  });
}

// 监听DOM树的变化
const observer = new MutationObserver(() => {
  addClickEventListeners();
});

// 配置MutationObserver
const observerConfig = {
  childList: true,
  subtree: true,
};

// 开始监听DOM树的变化
observer.observe(document.body, observerConfig);

// 页面加载完成后立即添加点击事件监听器
window.addEventListener('load', () => {
  addClickEventListeners();
});


blanka 回复 运营:秋风 2023-10-27 13:34 :

感谢,我好好琢磨琢磨

回复主贴