javascript - 如何限制对javascript对象的访问?

标签 javascript

我正在观看有关制作良好的 JavaScript 应用程序基础架构的视频。基本上它说的是:

  • 您的应用程序由组件组成
  • 组件是页面的一部分,可以独立运行。
  • 可以将组件注册到应用程序中。
  • 注册后,他们将获得自己的沙箱。
  • 沙箱是组件与应用程序核心的接口(interface)。
  • 核心构建在 javascript 库之上。
  • 组件只能访问它们的沙箱,不能访问其他组件,也不能访问核心或底层库。

现在,我想制作一个应用程序,您可以在其中轻松制作新组件。组件在页面上有自己的部分,它们可以在其中工作的 div。这是我的问题的第一部分:我想给这些组件一个 jQuery 对象的副本,但是它应用了一个内部限制,因此它只能在某个包含元素内工作。

第二部分是,即使组件使用 jquery 对 DOM 的访问受到限制,它仍然可以访问文档。在运行我的测试脚本之前,我尝试将 Window 和 Document 都设置为 null,但浏览器不允许这样做。有什么方法可以真正将对象的可能性限制为我传递给它的 1 个对象的方法吗?

最佳答案

你误解了这里的要点。目的不是“使组件 100% 不可能访问任何不应访问的内容”。做到这一点的唯一方法是 Facebook 采取的极其复杂的步骤,即解析 JS/HTML 代码并重写它以禁止某些引用等。我敢打赌他们的开发团队花了 1,000 多个小时才完成这样做,它仍然有漏洞。

基本上,目的是给每个组件一个沙箱来玩,然后说“请只使用这个”。作者随后遵从了请求。

您唯一的其他选择是 iFrame,在这种情况下,组件可以做任何它想做的事,并且不会产生任何影响(假设您在不同的子域中,并且您提供父窗口代理)。

关于javascript - 如何限制对javascript对象的访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569964/

相关文章:

javascript - 关于图像映射的一般问题

javascript - 用户切换浏览器选项卡时的事件

javascript - JS 全局变量未定义

javascript - 如何在不离开页面的情况下通过单击按钮显示 php 响应?

Javascript 时间问题并不认为我处于 startTime 和 endTime 之间

javascript - jquery获取嵌套元素的方法

javascript - 缓存和显示图像 PHP

javascript - 将字符串从 ajax 传递到 PHP

javascript - createImageBitmap 返回一个空图像

javascript - 需要更新 iframe 两次才能正常工作