无效时触发Google Chrome扩展程序操作的脚本

时间:2019-08-26 17:28:07

标签: javascript html google-chrome-extension

我的公司当前使用google chrome扩展程序通过数据挖掘和自动分页从LinkedIn提取联系方式。除插件何时会随机停止外,这还行之有效,然后这要求我们手动打开扩展弹出窗口,然后依次选择“停止”和“启动”,以使插件再次运行。

我想编写一个脚本来检查扩展是否不活动,然后自动触发“停止”然后“启动”的选择。我可以提出有关如何执行此操作的任何建议。我当时正在考虑编写一个Python脚本,该脚本监视扩展名特定的javascript操作(我可以在“检查元素”控制台上看到这些操作)并触发插件背后的Javascript。


这是一张显示我正在从事的工作的图像。

2 个答案:

答案 0 :(得分:1)

我已经设法解决了这个问题,感谢您的精彩回答。事实证明,有一种方法可以使按钮单击自动化(在控制台上使用$('。[[INSERT ELEMENT CLASS NAME HERE]')。click();)并使用针对chrome特定实例的硒pythonscript,我可以阅读活动日志并在需要时执行此操作– George c

答案 1 :(得分:0)

通常,您可以测试一段时间后是否不活动,这意味着在没有用户操作五分钟后,您可以执行脚本。您可以发送一些代码来帮助解释吗?

这是一个基本的jQuery脚本,可检测鼠标移动和按键事件

<script type="text/javascript">
var idleTime = 0;
$(document).ready(function () {
    //Increment the idle time counter every minute.
    var idleInterval = setInterval(timerIncrement, 60000); // 1 minute

    //Zero the idle timer on mouse movement.
    $(this).mousemove(function (e) {
        idleTime = 0;
    });
    $(this).keypress(function (e) {
        idleTime = 0;
    });
});

function timerIncrement() {
    idleTime = idleTime + 1;
    if (idleTime > 19) { // 20 minutes
        window.location.reload();
    }
}
</script>   

不使用jQuery,仅使用普通JavaScript:

var inactivityTime = function () {
    var time;
    window.onload = resetTimer;
    // DOM Events
    document.onmousemove = resetTimer;
    document.onkeypress = resetTimer;

    function logout() {
        alert("You are now logged out.")
        //location.href = 'logout.html'
    }

    function resetTimer() {
        clearTimeout(time);
        time = setTimeout(logout, 3000)
        // 1000 milliseconds = 1 second
    }
};

并在需要的地方初始化函数(例如:onPageLoad)。

window.onload = function() {
  inactivityTime(); 
}

如果需要,您可以添加更多DOM事件。最常用的是:

document.onload = resetTimer;
document.onmousemove = resetTimer;
document.onmousedown = resetTimer; // touchscreen presses
document.ontouchstart = resetTimer;
document.onclick = resetTimer;     // touchpad clicks
document.onscroll = resetTimer;    // scrolling with arrow keys
document.onkeypress = resetTimer;

或使用数组注册所需的事件

window.addEventListener('load', resetTimer, true);
var events = ['mousedown', 'mousemove', 'keypress', 'scroll', 'touchstart'];
events.forEach(function(name) {
 document.addEventListener(name, resetTimer, true); 
});

DOM事件列表:http://www.w3schools.com/jsref/dom_obj_event.asp

请记住根据您的需要使用windowdocument。在这里,您可以看到它们之间的区别:What is the difference between window, screen, and document in Javascript?