假文档.电子中的可见性史塔特



有没有办法在电子应用程序上伪造Document.visibilityState?对于一个无法正确处理失去焦点的网站,我需要这个(它只会查看Document.visibilityState,也应该查看Blur(。

最小化窗户的工作原理,但不方便。

编辑:我的用例是:我将网站包装在电子应用中。该网站正在查看Document.visibilityState,以了解用户是否处于活动状态。问题在于,如果用户切换到另一个窗口,则可见性的"可见"仍然是"可见的"。该网站还应该查看模糊/焦点事件,但不是(不是我的网站(。我想自己处理模糊事件(我可以(,然后伪造Document.visibilityState,因此知道它是不可见或专注的。

您可以使用类似于下面的脚本来覆盖值:

> document.__defineGetter__("visibilityState",  function() { return "tarun";})
undefined
> document.visibilityState
"tarun"

现在,主要的事情是您要确定要更改值的方法。下面显示的是您可以与网页进行交互的方式:

const electron = require('electron') 
  
// Importing BrowserWindow from Main Process using Electron remote 
const BrowserWindow = electron.remote.BrowserWindow; 
  
var inject = document.getElementById('inject'); 
let win = BrowserWindow.getFocusedWindow(); 
// let win = BrowserWindow.getAllWindows()[0]; 
  
inject.addEventListener('click', (event) => { 
    win.webContents.executeJavaScript('const path = require("path");'
        + 'const fs = require("fs");'
        + 'fs.readFile(path.join(__dirname, "../assets/sample.txt"), '
        + '{encoding: "utf-8"}, function(err, data) {'
        + 'if (!err) { console.log("received data: " + data); }'
        + 'else { console.log(err); } });', true) 
        .then(console.log('JavaScript Executed Successfully')); 
}); 
  
var print = document.getElementById('print'); 
print.addEventListener('click', (event) => { 
  
    var webSource = { 
        code: 'var numbers = [1, 2, 3, 4, 5];' 
        + 'function filters(num) { return num > 2; }' 
        + 'console.log(numbers.filter(filters));', 
        url: '', 
        startLine: 1 
    } 
  
    win.webContents.executeJavaScriptInIsolatedWorld(1, [webSource], true) 
        .then(console.log('JavaScript Executed Successfully')); 
}); 

ps:以上代码可在https://www.geeksforgeeks.org/dynamacy-execute-javascript-javascript-in-electronjs/

中找到

最新更新