Home Reference Source
import BootupSandbox from 'bootup-sandbox/src/bootup-sandbox.js'
public class | source

BootupSandbox

沙箱启动器

启动沙箱的流程

  • 创建一个沙箱 -> 启动一台电脑
  • 给沙箱安装环境 -> 安装操作系统
  • 执行代码 -> 在操作系统中执行代码

Constructor Summary

Public Constructor
public

constructor(options: object)

Member Summary

Public Members
public

document: Document

public

element: Element

public
public

window: Window

Private Members
private
private

Method Summary

Public Methods
public

addEventListener(event: string, handler: function(event: Event, data: *): void): BootupSandbox

监听沙箱里的事件, 通过 postMessge 实现

public

往沙箱的 body 中注入脚本

public

当容器环境准备好后需要触发的回调

public

移除沙箱里的事件监听

public

设置沙箱元素的样式

Private Methods
private

_init()

初始化

Public Constructors

public constructor(options: object) source

Params:

NameTypeAttributeDescription
options object
options.container Element
  • optional
  • default: window.document.body

放沙箱的容器(该元素必须是已经挂载的 DOM 节点)

options.beforeMount Function
  • optional

沙箱在挂载到 DOM 节点之前的 hook

Public Members

public document: Document source

public element: Element source

public options: object source

public window: Window source

Private Members

private _events: object source

private _isEnvReady: boolean source

Public Methods

public addEventListener(event: string, handler: function(event: Event, data: *): void): BootupSandbox source

监听沙箱里的事件, 通过 postMessge 实现

例如在沙箱中执行如下代码抛出事件

parent.postMessage({
    event: 'eventname',
    data: ''
}, '*');

Params:

NameTypeAttributeDescription
event string
handler function(event: Event, data: *): void

Return:

BootupSandbox

this

See:

public injectScript(content: string, options: object | Function): BootupSandbox source

往沙箱的 body 中注入脚本

Params:

NameTypeAttributeDescription
content string

脚本的内容(可以是直接的代码或者路径)

options object | Function
  • optional

options 当传入 Function 类型时, 默认指向 onload

options.onload Function
  • optional
  • default: function() {}
options.onerror Function
  • optional
  • default: function() {}
options.contentIsSrc boolean
  • optional
  • default: false

content 参数是否代表为外部引用的 src 路径

options.remove boolean
  • optional
  • default: false

注入之后是否删除

options.iife boolean
  • optional
  • default: true

是否包装一个 IIFE 来隔离作用域(只针对直接运行的代码, 对外部引用的 JS 不起作用)

Return:

BootupSandbox

this

public ready(callback: Function): BootupSandbox source

当容器环境准备好后需要触发的回调

需要在 iframe 里面通过 postMessage 来触发这个事件

parent.postMessage({
    event: 'ENV_READY',
    data: ''
}, '*');

Params:

NameTypeAttributeDescription
callback Function

Return:

BootupSandbox

this

public removeEventListener(event: string, handler: Function): BootupSandbox source

移除沙箱里的事件监听

Params:

NameTypeAttributeDescription
event string
handler Function
  • optional

当有 handler 参数时移除指定的事件监听; 当没有 handler 参数时移除所有该事件的事件监听

Return:

BootupSandbox

this

public setStyle(style: object): BootupSandbox source

设置沙箱元素的样式

Params:

NameTypeAttributeDescription
style object

Return:

BootupSandbox

this

Private Methods

private _init() source

初始化