我目前正在开发一个项目,该项目允许您在文本区域中输入 Javascript 并运行它。有很多后台代码监控页面并向服务器发送数据。所有这些都在一个私有函数中,因此无法简单地使用控制台闯入。那么唯一的问题是在 textarea 输入的代码在包含服务器函数的私有函数内部进行评估,从而使其能够访问站点的内部。我怎样才能隔离它并使它的范围在私有函数之外?下面是一个例子:
<script>
var x = 2;
(function(){
var x = 10;
var elem = document.createElement('button');
elem.addEventListener('click',function(){
alert(x);
});
document.body.appendChild(elem);
})();
</script>
在此示例中,我希望 x 在按下按钮时返回 2 而不是 10。从而迫使它像在全局范围内一样运行。
编辑
我已经尝试将函数绑定到似乎正在走正确路径的窗口,但没有达到我想要的效果。
<script>
var x = 2;
(function(){
var x = 10;
var elem = document.createElement('button');
elem.addEventListener('click',(function(){
alert(x);
}).bind(window));
document.body.appendChild(elem);
})();
</script>
我也尝试将窗口应用于该功能,但可惜也没有用。