Security News
Input Validation Vulnerabilities Dominate MITRE's 2024 CWE Top 25 List
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
@searchfe/sandbox
Advanced tools
一个简易的 Sandbox,用来隔离不同的页面组件,使它们的执行互不干扰。使用 APM 安装:
apmjs install @searchfe/sandbox
其中 Fetch API 可能需要适当的 Polyfill:
沙盒实例 创建后默认处于睡眠状态。需要调用 sandbox.run()
让它开始工作。
沙盒上下文 提供给沙盒内的业务逻辑使用,相当于浏览器的 window。
沙盒文档 局部的 DOM 文档对象,托管了所有事件,页面属性等。
元素对象 这是 HTMLElement 的一个沙盒代理对象,封装并托管了 DOM 操作。
事件接口,用于托管全局事件。Window 和 Document 对象实现了该接口。 根元素以下的事件监听不予监听,见:https://github.com/searchfe/sandbox/issues/2
Fetch API 的封装,见 https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API 具体实现取决于当前浏览器版本,以及当前环境的 Fetch Polyfill
定时器接口,用于托管定时器。Window 对象使用了该接口。
事件接口,用于托管全局事件。Window 和 Document 对象实现了该接口。 根元素以下的事件监听不予监听,见:https://github.com/searchfe/sandbox/issues/2
Kind: global interface
Add an event listener to the hosted object
Kind: static method of IEventTarget
Param | Type | Description |
---|---|---|
event | String | The event type |
cb | function | The event listener |
useCapture | Boolean | Whether or not use capture |
Remove an event listener to the hosted object
Kind: static method of IEventTarget
Param | Type | Description |
---|---|---|
event | String | The event type |
cb | function | The event listener |
useCapture | Boolean | Whether or not use capture |
Fetch API 的封装,见 https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API 具体实现取决于当前浏览器版本,以及当前环境的 Fetch Polyfill
发起一个被沙盒托管的网络请求,API 请参考: https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch
Kind: static method of IFetchAPI
Param | Type | Description |
---|---|---|
input | String | 目标 url |
init | function | 请求参数 |
定时器接口,用于托管定时器。Window 对象使用了该接口。
Kind: global interface
The setInterval() method repeatedly calls a function or executes a code snippet, with a fixed time delay between each call. It returns an interval ID which uniquely identifies the interval, so you can remove it later by calling clearInterval()
Kind: static method of ITimeout
Param | Type | Description |
---|---|---|
fn | function | The scheduled callback |
timeout | Number | Time inteval in millisecond |
移除定时器
Kind: static method of ITimeout
Param | Type | Description |
---|---|---|
id | Number | 定时器 ID,即 setInteval 的返回值 |
The setTimeout() method sets a timer which executes a function or specified piece of code once after the timer expires.
Kind: static method of ITimeout
Param | Type | Description |
---|---|---|
fn | function | The scheduled callback |
timeout | Number | Time in millisecond |
requestAnimationFrame() 是一个有 Polyfill 的 requestAnimationFrame(),相当于 16ms 的 timeout
Kind: static method of ITimeout
Param | Type | Description |
---|---|---|
fn | function | The scheduled callback |
移除定时器
Kind: static method of ITimeout
Param | Type | Description |
---|---|---|
id | Number | 定时器 ID,即 setTimeout 的返回值 |
沙盒实例 创建后默认处于睡眠状态。需要调用 sandbox.run()
让它开始工作。
Kind: global class
创建后默认处于睡眠状态。需要调用 sandbox.run()
让它开始工作。
Param | Type | Description |
---|---|---|
element | function | 沙盒对应的 DOM 根元素 |
[context] | Object | 初始化作用域,会被合并到 sandbox.window |
Example
require(['@searchfe/sandbox'], function(Sandbox){
var sandbox = new Sandbox(document.querySelector('#app'))
sandbox.run();
sandbox.setInterval(() => console.log('timeout!'), 100)
setTimeout(function(){
sandbox.stop();
// sandbox.die();
}, 5000);
})
让沙盒开始工作,开始接管事件、定时器、以及网络回调。
Kind: instance method of Sandbox
停止沙盒,冻结定时器和网络回调、忽略事件。
Kind: instance method of Sandbox
如果在跑,就让它停;如果已停,就让它跑
Kind: instance method of Sandbox
杀死沙盒,销毁内部的定时器、网络、事件回调。一旦杀死不可重新开始工作。
Kind: instance method of Sandbox
Add a listener to the sandbox, available event types: run, stop, die
Kind: instance method of Sandbox
Param | Type | Description |
---|---|---|
type | string | the event type |
cb | function | the callback |
once | boolean | execute only once |
Attach a handler to an event for the sandbox. The handler is executed at most once per event type.
Kind: instance method of Sandbox
Throws:
Error
event type not definedParam | Type | Description |
---|---|---|
type | string | the event type |
cb | function | the callback |
Execute all handlers and behaviors attached to the sandbox for the given event type
Kind: instance method of Sandbox
Param | Type | Description |
---|---|---|
type | string | the event type |
Remove a listener to the sandbox, available event types: run, stop, die
Kind: instance method of Sandbox
Throws:
Error
event type not definedParam | Type | Description |
---|---|---|
type | string | the event type |
cb | function | the callback |
Sandbox
生成一个子沙盒对象,子沙盒会跟随父沙盒的生命周期。子沙盒会继承当前沙盒的状态,即: 如果当前沙盒处于 RUNNING 状态,子沙盒会立即执行。
Kind: instance method of Sandbox
Returns: Sandbox
- 子沙盒对象
Throws:
Error
沙盒已死Error
指定的节点是当前沙盒的祖先Param | Type | Description |
---|---|---|
child | HTMLElement | string | 子 HTMLElement 或子元素选择符 |
[context] | Object | 子 HTMLElement 或子元素选择符 |
沙盒上下文 提供给沙盒内的业务逻辑使用,相当于浏览器的 window。
Kind: global class
Implements: IEventTarget
, ITimeout
, IFetchAPI
Document
Number
Number
Number
Number
Number
Number
创建一个沙盒上下文
Param | Type | Description |
---|---|---|
element | HTMLElement | 沙盒的根 DOM 元素 |
sandbox | Sandbox | 绑定到的沙盒对象 |
Document
沙盒的文档对象
Kind: instance property of Window
Location 对象的封装
Kind: instance property of Window
Number
Kind: instance property of Window
Read only: true
Number
Kind: instance property of Window
Read only: true
Number
Kind: instance property of Window
Read only: true
Number
Kind: instance property of Window
Read only: true
Number
Kind: instance property of Window
Read only: true
Number
Kind: instance property of Window
Read only: true
沙盒文档 局部的 DOM 文档对象,托管了所有事件,页面属性等。
Kind: global class
function
function
Sandbox
HTMLElement
Element
Element
Element
创建一个文档对象
Param | Type | Description |
---|---|---|
element | Element | 沙盒上下文 |
sandbox | Sandbox | 对应的沙盒对象 |
function
封装 querySelector
Kind: instance property of Document
Read only: true
function
封装 querySelectorAll,限制:返回值类型为 Array 而非 NodeList,这意味着返回列表不是 Live 的。
Kind: instance property of Document
Read only: true
Sandbox
与当前文档绑定的沙盒对象
Kind: instance property of Document
HTMLElement
Kind: instance property of Document
Read only: true
Element
Kind: instance property of Document
Read only: true
Element
Kind: instance property of Document
Read only: true
Element
Kind: instance property of Document
Read only: true
元素对象 这是 HTMLElement 的一个沙盒代理对象,封装并托管了 DOM 操作。
Kind: global class
Implements: IEventTarget
Document
Number
Number
Number
Number
Number
Number
Number
Number
Number
Number
创建一个元素对象
Param | Type | Description |
---|---|---|
element | HTMLElement | HTML 元素对象 |
Document
Kind: instance property of Element
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Read only: true
Number
Kind: instance property of Element
Number
Kind: instance property of Element
滚动窗口,见 https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo
Kind: global variable
FAQs
A lightweight sandbox implementation for the frontend
The npm package @searchfe/sandbox receives a total of 1 weekly downloads. As such, @searchfe/sandbox popularity was classified as not popular.
We found that @searchfe/sandbox demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 7 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.