博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何将Gate One嵌入我们的Web应用中
阅读量:5941 次
发布时间:2019-06-19

本文共 2778 字,大约阅读时间需要 9 分钟。

参考文档

 从下载的Gate One源代码中,在gateone/tests/hello_embedded中有关于如何将Gate One嵌入我们应用的指导说明。本篇随笔就是根据该指导进行处理,然后写的笔记。

如果还没有安装Gate One,可以先参考我之前的随笔“进行安装。

 1. 基本嵌入方式

首先先使用一个div来存放我们的Gateone,如下所示,

然后我们将Gate One源码中的gateone.js拷贝到我们web应用中,然后在我们的html中引入进来。或者直接使用使用Gate One服务上的gateone.js,如下所示,

最后调用GateOne.init()将我们Gate One嵌入我们的Web应用。

一个简单的示例代码和效果图如下所示,

      
Basic Embedding Gate One
Hello lienhua34

 

2. 进阶嵌入方式

调用GateOne.init()方法不只可以传递Gate One服务的URL,我们可以传递其他的参数来自定义嵌入的GateOne服务内容。例如,theme用于设置Gate One的主题,style用于自定义Gate One的样式。我们在上面的基本应用代码中修改GateOne.init()方法的调用参数如下,

GateOne.init({    url: 'https://127.0.0.1',    embedded: true,    // Let's apply some custom styles while we're at it ...    style: { 'background-color': 'yellowgreen', 'box-shadow': '0 0 40px blueViolet'}});

然后访问我们的应用得到如下效果,

 

我们看到嵌入的Gate One背景色变成了绿色,说明我们传递的style样式生效了。但是,等等。。。

我们发现一个很大的问题,嵌入的Gate One没有了之前打开Terminal的按钮,于是我们根本无法使用Gate One的网页Terminal功能了。这个是embedded参数的作用!当将embedded参数设置成true,表示只将Gate One初始化到页面中而不让Gate One做任何事情。于是,我们需要通过代码显示得让Gate One做事情,例如我们通过一个按钮来让Gate One打开一个Terminal,代码如下所示,

此时我们便可以通过点击”Add a terminal“按钮来新建一个Terminal,效果如下图所示,

 

3 GateOne.init()回调自动创建Terminal

GateOne.init()方法可以提供一个回调函数,该回调函数会在Gate One初始化完成之后自动调用。于是,我们可以在该回调函数中自动创建一个Terminal。其JavaScript代码如下,

var newTerminal = function() {    // Introducing the superSandbox()!  Use it to wrap any code that you don't want to load until dependencies are met.    // In this example we won't call newTerminal() until GateOne.Terminal and GateOne.Terminal.Input are loaded.    GateOne.Base.superSandbox("NewExternalTerm", ["GateOne.Terminal", "GateOne.Terminal.Input"], function(window, undefined) {        "use strict";        var existingContainer = GateOne.Utils.getNode('#'+GateOne.prefs.prefix+'container');    var container = GateOne.Utils.createElement('div', {            'id': 'container', 'class': 'terminal', 'style': {'height': '100%', 'width': '100%'}    });    var gateone = GateOne.Utils.getNode('#gateone');    // Don't actually submit the form    if (!existingContainer) {            gateone.appendChild(container);    } else {            container = existingContainer;    }    // Create the new terminal    termNum = GateOne.Terminal.newTerminal(null, null, container);     });};// Uses newExternalTerminal as GateOne.init()'s callback.// The callback will be called after Gate One is initialized.window.onload = function() {    // Initialize Gate One:    GateOne.init({        url: 'https://127.0.0.1',        embedded: true,    }, newTerminal);};
callbackInit.js

在创建新Terminal的方法newTerminal中使用到了GateOne.Base.superSandbox()。该方法用于包装任何代码,而该代码会一直等待到其所有依赖被加载完毕才会执行。上面代码创建新Terminal的实际代码会等待GateOne.TerminalGateOne.Terminal.Input加载完毕才会执行。

(done)

转载地址:http://bnmtx.baihongyu.com/

你可能感兴趣的文章
Apache Storm 官方文档 —— 常用模式
查看>>
聊聊JVM的年轻代
查看>>
lvm逻辑卷管理
查看>>
VS2010不能断点/下断的问题
查看>>
[Android]权限处理
查看>>
Spark bind on port 0. Attempting port 1 问题解决
查看>>
兼容所有浏览器的复制到剪切板功能,悬浮层不能复制问题解决
查看>>
day 20 第一阶段考试总结
查看>>
我的友情链接
查看>>
Centos 7.5 部署DNS
查看>>
yum简介
查看>>
cp讲解
查看>>
MariaDB Galera Cluster 部署(如何快速部署MariaDB集群)
查看>>
如何在 Swift 语言下使用 iOS Charts API 制作漂亮图表?
查看>>
论代码审查的重要性
查看>>
「docker实战篇」python的docker爬虫技术-导学(一)
查看>>
linux日志基础介绍
查看>>
如何关闭SElinux
查看>>
处理器之MMU(三)
查看>>
172.16.82.0/25的含义,IP段,掩码
查看>>