我有以下代码:

var parentAction = document.querySelector("[title='Actions for Tab']");
var refreshButton = parentAction.getElementsByClassName("slds-truncate")[0].click();

这会导致网站上的特定选项卡刷新.我在一个函数中设置了它,间隔设置为每60秒运行一次.运行时没有任何问题.

然而,很多时候,当用户在输入字段中键入内容时,此函数将运行.当点击发生时,它会从用户键入的内容中获得焦点,并导致页面上随机打开窗口,因为他们按的是键.如果他们当时没有打字,那没关系.他们只需单击返回到输入字段并继续.不过,这确实让人很沮丧.

有没有更好的方法来模拟点击事件,而不必从输入字段中获取焦点?

推荐答案

如果选项卡通过ajax刷新,那么为什么不调用一个方法呢

如果必须走这条路由:

var i = document.querySelector('input')
var inputFocus = false, pageTimer;
 
i.onfocus = () => {

    inputFocus = true;
    pageIdle()
}
  
i.onblur = () => { pageIdle() }


let refreshPage = () => {

   if (!inputFocus) console.log('page refresh')
}

let pageIdle = () => {
 
   console.log('user typing')
   if(pageTimer) clearTimeout(pageTimer)
   pageTimer = setTimeout(() => { inputFocus = false}, 6000)   <<  refreshes when users idles
}

setInterval(refreshPage, 2000)    <<  refreshes regularly 

document.onkeydown = () => {

   inputFocus = true 
   pageIdle()
}

https://jsfiddle.net/7co5yjnb/1/

Javascript相关问答推荐

如何在react + react路由域名中使用DeliverBrowserRouter?

Angular material 表多个标题行映射

为什么从liveWire info js代码传递数组我出现错误?

Google Apps脚本中的discord邀请API响应的日期解析问题

防止用户在selectizeInput中取消 Select 选项

InDesign—创建一个独立的窗口,在文档中进行更正时保持打开状态

如何修复我的js构建表每当我添加一个额外的列作为它的第一列?

如何让npx在windows中运行js脚本?

在使用HighChats时如何避免Datatables重新初始化错误?

Html文件和客户端存储的相关问题,有没有可能?

使用Java脚本导入gltf场景并创建边界框

在Java中寻找三次Bezier曲线上的点及其Angular

基于props 类型的不同props ,根据来自接口的值扩展类型

为什么云存储中的文件不能公开使用?

Reaction-SWR-无更新组件

为什么当我更新数据库时,我的所有组件都重新呈现?

如何组合Multer上传?

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

使用API调用的VUE 3键盘输入同步问题

为什么我不能使用其同级元素调用和更新子元素?