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=" ...
随机推荐
- blfs(systemd版本)学习笔记-总页
我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! lfs(systemd版本)学习笔记:https://www.cnblogs.com/renren-study-notes/p/ ...
- 网络编程学习二(IP与端口)
InetAddress类 封装计算机的ip地址,没有端口 // 使用getLocalHost方法创建InetAddress对象 InetAddress addr = InetAddress.getLo ...
- JS闭包和引用
简介 Javascript 中一个最重要的特性就是闭包的使用.因为闭包的使用,当前作用域总可以访问外部的作用域.因为Javascript 没有块级作用域,只有函数作用域,所以闭包的使用与函数是紧密相关 ...
- element-ui 的el-button组件中添加自定义颜色和图标
我使用的element-ui的版本是V1.4.13. 如上图所示,如果使用el-button,加颜色是可以通过设置type属性的值,加图标就设置icon属性的值. 现在产品给了一个需求,就是自定义的很 ...
- 双网卡设置(转:https://www.cnblogs.com/visionfeng/p/5825078.html)
双网卡一般情况不能有两个网关 特别是别设内网网关,这样有段时间过后会出现访问不了外网情况 支持两个网关的方法倒是有 让双网卡一台电脑拥有两个网关(转) 首先要声明一点,双网卡一台电脑拥有两个网关是不可 ...
- 网络基础 http 会话(session)详解
http 会话(session)详解 by:授客 QQ:1033553122 会话(session)是一种持久网络协议,在用户(或用户代理)端和服务器端之间创建关联,从而起到交换数据包的作用机制 一. ...
- 3.网络编程-tcp的服务器简单实现
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/13 22:03 # @Author : ChenAdong # @ema ...
- python第八十八天----dom js
DOM操作 1. 找到标签直接查找 document.getElementById 根据ID获取一个标签 document.getElementsByName 根据name属性获取标签集合 docum ...
- Javascript 高级程序设计--总结【一】
文档模式 混杂模式 标准模式 js 数据类型 Undefined Null 看做是一种空对象的引用 Boolean Number String Object typeof 返回类型 "un ...
- 用Python实现数据结构之队列
队列 队列与栈的类型很相似,但它遵循的原则是先进先出(FIFO),也就是元素插入的时候只能在该数据结构的末端,而删除只能删除最前面的元素.队列同样应用广泛,例如打印机的队列或者是一个web服务器响应请 ...