2

有谁知道是否可以阻止 JavaScript 函数访问 DOM?

更多信息:

我正在尝试为 JavaScript 创建一个“线程”对象,例如使用 Worker 对象,在不可用时使用 setTimeOut。显然工作人员无法访问 DOM,我想保持这个标准。

更多信息:

一种可能但丑陋的可能解决方案(我刚才想通了):

function test(document, window)
{

}

但是没有什么能阻止开发人员从他在此函数中调用的另一个函数访问 dom - 而且您必须列出参数的世界。

4

3 回答 3

2

不,这在普通的浏览器环境中是不可能的。

你也许可以document.getElementById在调用函数之前替换一些东西,然后再恢复它......但我相信有办法解决这个问题。

于 2012-12-11T11:59:29.423 回答
2

您可以在Web Worker中执行该功能。Web Worker 无法访问 DOM。

但实际上,你想达到什么目的?

于 2012-12-11T12:01:23.063 回答
2

由于您的目标是强制执行约定而不是完全将 JavaScript 沙箱化,因此您确实可以使用带有 的函数windowdocument以及在本地隐藏的其他 DOM 接口,然后评估第三方脚本:

(function test(window, self, top, document) {
    'use strict'; 
    eval(untrustedCode);
}());

当然,他们仍然可以访问真正的全局对象,但至少不能直接访问。

于 2012-12-11T12:44:37.033 回答