js中可以通过eval或Function及settimeout动态执行js代码
1、eval()
eval() 是最简单的方式,直接执行一个字符串:
var code = 'console.log("Hello!")';
eval(code); // Hello!
eval() 会在当前作用域下执行代码。
2、new Function()
new Function()可以创建一个临时函数,并执行它:
var code = 'console.log("Hello!")';
new Function(code)();
// Hello!
3、setTimeout()
利用setTimeout()间接执行代码:
var code = 'console.log("Hello!")';
setTimeout(code, 0);
但是这三款没办法做个隔离执行代码,那么还有三种办法实现隔离执行js代码
1、远程代码执行,将代码发送给服务器端执行后获得结果
2、Web Worker
Web Worker 允许你创建一个隔离的 JS 环境,主线程和 Worker 线程之间只能通过消息来通信。
你可以这么创建一个 Worker 并执行代码:
var myWorker = new Worker('worker.js');
myWorker.onmessage = function(e) {
console.log(e.data);
};
myWorker.postMessage('run code');然后在 worker.js 中定义:onmessage = function(e) {
var code = e.data; // 获取要运行的代码
eval(code)
// 执行代码...
}3、iframe
iframe 是一个独立的文档,你可以在 iframe 中执行JS代码,不影响主页面:
<iframe id="frame"></iframe>
<script>
var frame = document.getElementById('frame');
var win = frame.contentWindow;
var doc = frame.contentDocument;
doc.open();
doc.write('<script>var a = 1</script>');
doc.close();
console.log(win.a); // 1, 可访问iframe内的变量
</script>
完整代码:点击打开链接
网友回复
有没有不依赖embedding向量的RAG技术?
有没有支持实时打断语音通话并后台帮你执行任何的ai模型?
开源ai大模型文件格式GGUF、MLX、Safetensors、 ONNX 有什么区别?
出海挣钱支付收款PayPal、Wise 、PingPong、Stripe如何选择?
如何实现类似google的图片隐形水印添加和识别技术?
linux上如何运行任意windows程序?
ai能写出比黑客还厉害的零日漏洞等攻击工具攻击任意软件系统工程?
js如何获取浏览器的音频上下文指纹、Canvas指纹、WebGL渲染特征?
为啥ai开始抛弃markdown文本,重新偏好html文本了?
网站有没有办法鉴别访问请求是由ai操控chrome-devtools-mcp发出的?


