javascript - 为什么 addEventListener 不适用于在 vm nodejs 上运行的脚本?
问题描述
我正在尝试使用vm
模块在隔离上下文中执行脚本nodejs
,但是,由于我无法控制脚本(因为脚本来自用户),我无法避免用户使用addEventListener
方法。我需要检测脚本何时抛出错误,因为try{}catch(){}
在这种情况下不起作用。我正在使用 node 版本12.19.0
和 electronjs 版本9.3.1
,下面是代码:
var vm = require('vm'),
fs = require('fs');
var sandbox = {
createElement: function(tag_name){
return document.createElement(tag_name);
}
};
var script = new vm.Script(fs.readFileSync('script_path.js'));
//Create context
vm.createContext( sandbox );
//run
script.runInContext( sandbox );
该代码在脚本代码中使用时会失败addEventListener
,例如:(script_path.js)
var element = createElement('p');
//If addEventListener is needed
element.addEventListener('click', function(){}, false);
如果我加载该脚本,窗口浏览器 (Electron) 会显示一个空白页面,并且控制台会断开连接。如果我添加一个 try-catch 来处理可能的错误,它也不起作用。
解决方案
推荐阅读
- c++ - Explanation needed with AES_cfb128_encrypt() function
- c++ - namespace myspace { int x } 现在为什么 `myspace::x=3;` 会出错?
- r - 在R中合并后如何识别哪些数据属于哪个数据集?
- python - python suds 加载 wsdl 问题
- python - line.rstrip("\n") 和 line.rstrip(os.linesep) 的区别?
- powerbi - 在卡片可视化 Power BI 中将单词空白替换为 0
- react-native - 无法在实时设备中安装反应原生应用程序
- python - 从代码 python 中减少 if - elif-else 语句
- ios - 如何创建具有不同起始价格的订阅?
- pine-script - OANDA:XAUUSD - 基础货币为空