使用javascript将鼠标坐标发送到其他程序

时间:2018-08-23 09:04:51

标签: javascript python google-chrome

我写了一个简短的扩展名,可以捕获我在Chrome中的鼠标移动,我想在Javascript捕获它们后立即在Python中使用这些坐标,有关内容文件中的简短Javascript代码,请参见下文:

var actualCode = `
document.onmousemove = function(e){
  var pageCoords = "( " + e.pageX + ", " + e.pageY + " )";
  console.log(pageCoords);
};
`;

var script = document.createElement('script');
script.textContent = actualCode;
(document.head||document.documentElement).appendChild(script);
script.remove();

当前,Javascript只是将它们打印在控制台中,我当时正在考虑打印到文本文件,然后让python读取它,但这似乎是一个非常缓慢的过程,充满了潜在的问题。

有更好的方法将数据从JavaScript扩展程序生成的Chrome浏览器传输到Python脚本吗?

编辑:这与How to send data from JavaScript to Python不同,因为它专注于Web开发,这两个脚本都在我的本地计算机上运行。

1 个答案:

答案 0 :(得分:0)

我不是Python开发人员,但我可以帮助您了解如何使其正常工作。

理论上,您可以向本地(或远程)Python服务器发出POST HTTP请求,该服务器每隔X秒获取一次鼠标数据。

有关如何使用JS进行客户端处理的示例(因为我不知道如何使用Python进行服务器处理):

let pageCoords = [];
let isNewDataCaptured = false;

// make a request every 1s
setInterval(() => {
    // checks if the browser captured new mouse data
    if (isNewDataCaptured) {
        // create a new vanilla XHR request but can be simplified
        // with the Axios package.
        const XHR = new XMLHttpRequest();

        // listener for the request completion
        // resets everything after the data was sent to the Python server
        XHR.addEventListener( 'load', () => {
            isNewDataCaptured = false;
            pageCoords = []
        });

        // the server URL and port is an example,
        // you can replace them with whatever suits you the most
        XHR.open('POST', 'http://localhost:3000')
        XHR.send(JSON.stringify(pageCoords))
    }
}, 1000)

document.onmousemove = (e) => {
  isNewDataCaptured = true;
  pageCoords.push({
     x: e.pageX,
     y: e.pageY
  })
};

您现在所要做的就是找到一种方法,在Python服务器上获取此数据,并通过Python将它们保存为数组或任何您想对其进行处理的方式。 :D