前段时间继续下来的基于Skyline的B/S项目,是基于Terra Explorer6.6实现的。项目中涉及到基于三维模型查询设备编码等操作,从用户友好角度来讲,查询到的设备编码应该要支持复制,方便用户基于编码的二次查询和操作。

1. Terra Explorer弹出窗口限制

通常来说,在浏览器中复制页面内容,是由浏览器右键支持的,虽然格式和内容我们不能定制,但是也能满足要求。但是在TE弹出不支持右键复制,右键菜单有,但是内容复制不出来。

2. clipboard.js轻量级实现剪切板js插件

clipboard.js 是一个不需要flash,将文本复制到剪贴板的js插件。用法很简单,这里使用其中的一种方法:

    <!--html代码-->
<button id="mapclipboard_btn" data-clipboard-action="copy" data-clipboard-text="">复制</button>
    //实例化剪切板对象
var clip = new Clipboard('#mapclipboard_btn');

这种形式的使用思路是,触发mapclipboard_btn按钮的click事件后,clipboardJS插件将data-clipboard-text属性的内容复制到剪切板。这样我们可以在触发按钮click事件前,设置好要复制到剪切板的内容。

3. 结合cliboard.js的Terra Explorer弹出窗口剪切板功能实现

这里我们使用clipboardJS插件,结合TE的消息机制实现弹出窗口剪切板功能。

首先,在主页面中加入2中代码,实例化剪切板对象;

其次,在TE弹出窗口,增加复制按钮,并在触发复制按钮时,使用TE接口发送复制文本消息;

<!--弹出窗口复制按钮-->
<input id="text" style="width: 55%; height: 20px;"/>
<button id="copy" style="width: 35%; height: 25px;">
复制
</button> //复制按钮单击事件
$("#copy").click(function () {
var text = $("#text");
sgworld.Window.ShowMessageBarText(text);
});

最后,在主页面中添加消息处理代码,添加剪切板内容

sgworld.AttachEvent("OnSGWorldMessage", function (messageId, sourceObjectId) {
var clipboardText = messageId;
$("#mapclipboard_btn").attr("data-clipboard-text", clipboardText);
$("#mapclipboard_btn").trigger("click");
return true;
}

如果OnSGWorldMessage已经在使用,可以通过条件消息类型的方式与其他消息进行区分。至此,就实现了TE6.6中弹出窗口简单的剪切板功能。

4. 7.0.1已经支持弹出窗口内容的复制

在写这篇博客时由于要使用TE7.0.1的新特性和功能,系统已经升级到TE7.0.1。顺手一点右键复制,发现是有效的。看来老外也注意到了这个问题,已经解决了。虽然右键复制不是那么友好,无法定制格式和内容,但是毕竟可以选什么复制什么,也算是很实用的。

写在最后

最近早上上班总要把博客园首页感兴趣的最多推荐、最多评论、新闻头条、推荐新闻看一下。一方面是因为手头项目越来越让人头疼,陷入了孤军奋战、推进困难的窘境。另一方面也在想转眼自己已经工作将近五年了,也要迈入30岁了,有点焦虑。总觉得自己技术还可以,学习能力还不错,但是第一次跳槽后,总感觉再也找不到适合自己的工作了。一年有大半年在外出差,现场开发、调试,租的房子好像就是用来放行李的。每每回到自己base地,躺在床上,总不想再出差了。

出差与不出差的交织,也使本来就定力不好的我,变得懒惰,形不成好的习惯。每每是刚刚习惯了跑步,刚刚学个新东西到了一半,就会被出差或者回公司打断。回头看看在园子里转了5年,也没有留下些什么,自己也不知道自己沉淀了什么,积累了什么。于是,总想写点什么,不知道是担心,还是想发泄。

真的不想一个人,很怀念刚工作的时候。6、7个人住在北京的两室一厅,一起上下班,一起玩游戏,一起学习,玩的快乐,工作有劲,相互学习,相互进步。

Skyline Terra Explorer6.6弹出窗口实现复制功能的更多相关文章

  1. jQuery弹出窗口浏览图片

    效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/3.htm HTML文件代码: <!DOCTYPE HTML> <html> < ...

  2. EasyUI弹出窗口实例

    效果体验:http://hovertree.com/texiao/jeasyui/1.htm 源代码下载:HovertreeJEasyUI HTML文件代码: <!DOCTYPE html> ...

  3. 让IE8在win7下面能显示使用window.showmodaldialog弹出窗口的地址状态栏

    问题来源:最近又要对老的系统进行改善,由于用到了window.showmodaldialog这个方法弹出窗口,比如从主界面弹出新增或者修改窗口,如下图所示,显示没有地址栏,进行代码修改还要找到相应的文 ...

  4. java selenium (十二) 操作弹出窗口

    selenium 中如何处理弹出窗口 阅读目录 原理 在代码里, 通过         Set<String> allWindowsId = driver.getWindowHandles ...

  5. JSP弹出窗口和模式对话框

    本文转载于其它blog,在此向本文原创者,致意!    JSP 弹出窗口  一.window.open() 基础知识      1.window.open()支持环境:  JavaScript1.0+ ...

  6. [转]js来弹出窗口的详细说明

    1.警告对话框 <script> alert("警告文字") </script> 2.确认对话框 <script> confirm(" ...

  7. OAF_开发系列08_实现OAF通过Popup参数式弹出窗口(案例)

    20150711 Created By BaoXinjian

  8. 【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)

    这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾.因为两个的内容都不多,我就合成一篇文章啦. 这还里 ...

  9. jquery-通过js编写弹出窗口

    本文转载 本文主要是通过js动态控制div的高度,css控制浮动 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

随机推荐

  1. ES 18 - (底层原理) Elasticsearch写入索引数据的过程 以及优化写入过程

    目录 1 Lucene操作document的流程 1.1 添加document的流程 1.2 删除document的流程 2 优化写入流程 - 实现近实时搜索 2.1 流程的改进思路 2.2 设置re ...

  2. handler原理

    一.消息机制概述 1.消息机制的简介 (1)Handler是什么 handler使Android给我们提供的用来更新UI的一套机制,也是一套消息处理机制:我们可以用它发送处理消息. (2)Androi ...

  3. java~springcloud微服务目录索引

    回到占占推荐博客索引 最近写了不过关于java,spring,微服务的相关文章,今天把它整理一下,方便大家学习与参考. java~springcloud微服务~目录索引 springcloud~服务注 ...

  4. video 属性和事件用法大全

    1.video 属性 <!-- video 不支持 IE8及以下版本浏览器,支持三种视频格式:MP4,WebM 和 Ogg --> <video src="test.mp4 ...

  5. 第10章 协议和声明类型常量 - IdentityModel 中文文档(v1.0.0)

    使用OAuth 2.0,OpenID Connect和声明时,声明类型和protocoal值有很多"魔术字符串".IdentityModel提供了几个常量字符串类来帮助它. 10. ...

  6. Http通讯Util

    目录 HttpUtil类 HttpUtil类 import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...

  7. 万马齐喑究可哀-中文编程的又一波"讨论"

    刚申诉了自动折叠, 还是把回答转帖一下: 吴烜:假设中国人最先开发电脑和设计程序语言,那么各种程序语言会使用汉字吗? 这种有明显倾向性的问题怎么还有市场呢...不管谁先开发的电脑(就不论算盘之类是不是 ...

  8. C# 接口《通俗解释》

    接口 为什么要用接口?好处在哪里? 如果你的工作是一个修水管的,一天客户找上你让你帮装水管,但是有个要求,就是客户喜欢管子是三角形的. 你立马买了三角形的水管回来,在墙上弄个三角形的口子,客户付了钱, ...

  9. 阿里如何实现海量数据实时分析技术-AnalyticDB

    导读:随着数据量的快速增长,越来越多的企业迎来业务数据化时代,数据成为了最重要的生产资料和业务升级依据.本文由阿里AnalyticDB团队出品,近万字长文,首次深度解读阿里在海量数据实时分析领域的多项 ...

  10. Javascript高级编程学习笔记(99)—— WebGL(5) 绘图

    绘图 WebGL只能绘制三种形状: 点 线 三角 其它的形状都是由上面的三种形状合成之后绘制到三维空间中的 执行绘图操作 WebGL 提供了两种方法: gl.drawElements() gl.dra ...