javascript - 电子中的假 Document.visibilityState
问题描述
有没有办法Document.visibilityState
在电子应用程序上伪造?对于一个不能正确处理失去焦点的网站(它只关注Document.visibilityState
并且应该关注模糊),我需要它。
最小化窗口有效,但不方便。
编辑:我的用例是:我将网站包装在电子应用程序中。该网站正在查看Document.visibilityState
用户是否处于活动状态。问题是如果用户切换到另一个窗口,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/dynamically-execute-javascript-in-electronjs/
推荐阅读
- c - FLT_DIG、DBL_DIG 和 LDBL_DIG 在 C 中是如何确定的
- java - jpanel.add(component) 在 actionListener 中不起作用
- android - Firebase Auth UI Android,getIdToken() 返回的任务永远不会完成
- prolog - 如何为序言中的列表中的项目赋予值
- java - 具有大量节点和边的Java中的最大流算法太慢
- php - 在 PHP 中为 JSON Ajax 响应动态构建 ChartJs 数据集
- javascript - 本身具有依赖关系的间谍服务
- c# - 如何计算匿名方法?
- javascript - Javascript如何在不改变原始数组的情况下将对象数组转换为对象对象?
- jquery - 当列内容为html时,jQuery Datatables过滤列