SkylineGlobe的PopupMessage里面嵌入的网页如何与主页面交互通讯
1.主页面调用PopupMessage,如果需要传值,就是普通的页面间的传值就可以实现了。
a.html页面调用PopupMessage创建方法,url传入b.html?x=111&y=22;
然后在b.html接收解析就可以了;
// GetParamValue
function GetParamValue(findParam, defaultValue)
{
var arr = document.location.href.split("?");
if (arr.length <= 1) return defaultValue;
arr = arr[1].split("&");
for (var i = 0; i < arr.length; i++) {
if (arr[i].indexOf(findParam) == 0 && arr[i].indexOf("=") == findParam.length) {
arr = arr[i].split("=");
return arr[1];
}
}
return defaultValue;
}
2.PopupMessage里面嵌入的子页面如何调用主页面上的变量和函数方法呢?
或者说如何实现主页面调用PopupMessage中嵌入的子页面中的变量或者函数方法呢?
一些刚接触SkylineGlobe的开发者可能会比较困惑,但早在十几年前,Skyline就已经提供了终极解决办法。
只不过没有把这个接口升级成最新版本的,使用这个接口的时候,需要定义一个老版本的TE对象。
如果你的Skyline起点就是6之后的版本,可能会错过这个IScriptEngine接口。
具体实现示例代码如下:
A页面是主页面,B页面是嵌入PopupMessage中的子页面,
A页面上的代码如下:
var ttt = "ttt11";
function OnLoadFinished() {
//var TE = _$SGCreateTEObj();
var TE = TEX1.CreateInstance("TerraExplorerX.TerraExplorer");
var IScriptEngine = TE.interface("IScriptEngine5");
try { IScriptEngine.UnregisterName("ContentCreatorWindow"); } catch (e) { }
try { IScriptEngine.RegisterGlobalName("ContentCreatorWindow", window); } catch (e) { }
}
/*利用IScriptEngine接口的GetGlobalName方法,获取B页面的Window对象*/
function test4() {
//var TE = _$SGCreateTEObj();
var TE = TEX1.CreateInstance("TerraExplorerX.TerraExplorer");
var IScriptEngine = TE.interface("IScriptEngine5");
var test = IScriptEngine.GetGlobalName("++ToolsEditorWindow");
alert(test.aaa);//得到html1页面中的aaa全局变量;
} /*定义Skyline5版本的TE Object*/
function $(id) {
return window.document.getElementById(id);
}
function _$SGCreateTEObj() {
var obj = $("TE");
if (obj == null) {
obj = document.createElement('object');
document.body.appendChild(obj);
obj.name = "TE";
obj.id = "TE";
obj.classid = "CLSID:3a4f9191-65a8-11d5-85c1-0001023952c1";
}
return obj;
}
B页面上的代码如下:
var aaa = "aaa";
function Init()
{
var TE = _$SGCreateTEObj();
var IScriptEngine = TE.interface("IScriptEngine5");
try { IScriptEngine.UnregisterName("ToolsEditorWindow"); } catch (e) { }
try { IScriptEngine.RegisterGlobalName("ToolsEditorWindow", window); } catch (e) { alert("error RegisterGlobalName: ToolsEditorWindow") }
}
/*利用IScriptEngine接口的GetGlobalName方法,获取A页面的Window对象*/
function TestSE()
{
var TE = _$SGCreateTEObj();
var IScriptEngine = TE.interface("IScriptEngine5");
var test = IScriptEngine.GetGlobalName("++ContentCreatorWindow");
alert(test.ttt);//得到A页面中的ttt全局变量;
}
看到上面的代码感觉如何?是的,就这么简单!
SkylineGlobe的PopupMessage里面嵌入的网页如何与主页面交互通讯的更多相关文章
- 博客代码:iframe—网页中嵌入其他网页
iframe 是一个可以把另外一个网页嵌入到一个网页里的代码,非常有用.对于一个内容不错的网页,要方便地把它搬到自己的博客里,用这个代码最合适.而对于在新浪博客里不支持的一些网页效果和代码,可先把他们 ...
- Nodejs进阶:如何将图片转成datauri嵌入到网页中去
问题:将图片转成datauri 今天,在QQ群有个群友问了个问题:"nodejs读取图片,转成base64,怎么读取呢?" 想了一下,他想问的应该是 怎么样把图片嵌入到网页中去,即 ...
- Unity3d嵌入web网页
应用场景 程序中的界面风格 UI内容等相关内容需要很容易方便的跟新替换,不使用unity传统的热加载方式,也不想使用和H5等做混合APP的时候, 就用嵌入web来实现. 假如我想替换某个背景图,一般来 ...
- 使用Data URL将图片嵌入到网页中
早些时候,使用IE6浏览器,网页可以另存为mht,如果网页包含图片,那么图片也会存储到mht中. mht是微软提供的一种聚合HTML文档,它的本质其实是一个文本文件,那么我们也许会好奇,它的图片存储到 ...
- 嵌入在网页上Flash媒体播放器(1)
做的项目,在不久的将来相关的Flash玩家使用,需要播放视频的网页上,不同的视频资源,需要不同的球员.基于使用稳定性.的嵌入式和嵌入式复杂性能的优点概括起来有两种方式(不同的玩家),视频资源也略有不同 ...
- 【WPF】使用CefSharp嵌入HTML网页
需求:WPF项目中要做用户的商铺主页,由于考虑到每个商家的主页布局各不相同,不能用XAML写死布局.最好的办法是WPF这边XAML写好一个容器,用户使用HTML可视化编辑器(比如这个)来准备好网页,输 ...
- 获取Google地图位置坐标并嵌入到网页
有时候做网页的时候,可能需要一个地图显示,可能会用到Google地图,所以就分享一下get到的新技能.在网上查资料的时候有这种方式 但是我没做成功,所以找了其他的方式. 首先,打开Google地图,查 ...
- WinForm嵌入Web网页的解决方案
企业级信息化系统绝大部分采用BS架构实现,如门户网站.OA系统.电商网站等,通过浏览器输入Web网址即可访问,对于使用者来说非常便捷,对于开发维护者来说也非常方便,程序维护只需更新服务器即可,使用者无 ...
- 测试嵌入GeoGebra网页
使用 http://ggbstudy.top/tools/ggb2html/ 将GGB文件免费托管,然后在博客内容中点击“HTML”按钮插入GGB网页地址: <iframe src=" ...
随机推荐
- 初学CSS-3-文字的属性
文字样式属性: 格式:font-style:italic;/normal; 快捷键:fsi / fsn + tab键 文字粗细属性: 格式:font-weight:bold;/bolder;/ligh ...
- SD从零开始66 数据仓库的概念
[原创] SD从零开始66 数据仓库的概念 数据仓库概念:预览Data Warehouse Concepts:Overview 本单元解释LIS中的数据仓库概念: 详细的解释了该概念的各个层次-介绍了 ...
- 【转】用yum只下载rpm包而不安装
转自:http://liucheng.name/1950/ CentOS用yum安装软件是非常方便的,有时,我们只需要下载其中的rpm包,而不直接安装时咋办呢? 一般情况下,yum是不提供只下载的功能 ...
- Oracle 使用SQL*Plus连接数据库
Oracle使用SQL*Plus连接数据库 by:授客 QQ:1033553122 使用sqlplus连接数据库 A 方式1 1.开启SQL*Plus,但不连接到数据库 $ sqlplus /NO ...
- [iOS]多线程和GCD
新博客wossoneri.com 进程和线程 进程 是指在系统中正在运行的一个应用程序. 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内. 比如同时打开QQ.Xcode,系统就会分别 ...
- 手动将经典 VM 从 VHD 迁移到新的 ARM 托管磁盘 VM
本部分有助于将现有 Azure VM 从经典部署模型迁移到资源管理器部署模型中的托管磁盘. 计划迁移到托管磁盘 本部分可帮助你针对 VM 和磁盘类型做出最佳决策. 位置 选取 Azure 托管磁盘可用 ...
- EntityFramework Code-First 简易教程(七)-------领域类配置之Fluent API
Fluent API配置: 前面我们已经了解到使用DataAnotations特性来覆写Code-First默认约定,现在我们来学习Fluent API. Fluent API是另一种配置领域类的方法 ...
- FastReport脚本把数据绑定到文本控件上
public class ReportScript { private void Data25_BeforePrint(object sender, EventArgs e)//Data25是指需要绑 ...
- 高通 sensor 从native到HAL
app注册传感器监听 Android Sensor Framework 的整体架构如下图所示: 前几篇sensor相关的文章介绍了sensor的hal的知识,以press_sensor实时显示气压坐标 ...
- 第七章 鼠标(CHECKER2)
CHECKER2程序包含一个键盘接口,内容与CHECKER1完全相同.利用←.→.↑.↓四个方向键可以在25个矩形之间移动鼠标指针.Home键把鼠标指针移动到左上角的矩形:End键使鼠标指针落到右下角 ...