Flex嵌入HTML页面
这段时间一直在苦心研究Flex,今天突然想,我们平时都是把swf放到网页中,怎么才能把网页嵌入到Flex中呢?我查了一些资料,然后经过自己的不懈努力,终于搞定。
为了方便,写了个嵌入HTML页面的代理IFrame组件,该组件封装了所有需要的Flex端代码,后面只要通过标签调用就OK了。
IFrame.mxml文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" resize="callLater(moveIFrame)" move="callLater(moveIFrame)" initialize="init();">
- <mx:Script>
- <![CDATA[
- import mx.controls.Alert;
- import flash.external.ExternalInterface;
- import flash.geom.Point;
- import flash.net.navigateToURL;
- private var __source: String;
- //Flash场景0,0坐标 var localPt:Point = new Point(0, 0);
- //转换为浏览器页面坐标 var globalPt:Point = this.localToGlobal(localPt);
- //这样就可以在Flex页面中嵌入任意的HTML页面了,为了方便,
- public function moveIFrame():void
- {
- var localPoint:Point = new Point(0, 0);
- var globalPoint:Point = this.localToGlobal(localPoint);
- ExternalInterface.call("moveIFrame", globalPoint.x, globalPoint.y, this.width, this.height);
- }
- //调用javaScript的loadIFrame方法,设置IFrame的src(URL)
- public function set source(source: String): void {
- if (source)
- {
- if (!ExternalInterface.available)
- {
- Alert.show("The ExternalInterface is not available in this container. Internet Explorer ActiveX, " +
- "Firefox, Mozilla 1.7.5 and greater, or other browsers that support NPRuntime are required.");
- }
- __source = source;
- //Alert.show(source);
- ExternalInterface.call("loadIFrame",source);
- }
- }
- //初始化时注册供javaScript调用的方法
- public function init():void
- {
- ExternalInterface.addCallback("IFrameOnBulr",showIFrameAgain);
- }
- //javaScript调用IFrameOnBlur方法时的处理方法
- public function showIFrameAgain():void
- {
- this.source=this.__source;
- this.showIFrame=true;
- this.moveIFrame();
- }
- //调用javaScript的IFrameShow方法,设置IFrame的可见状态
- public function set showIFrame(display:Boolean):void
- {
- ExternalInterface.call("IFrameShow",display);
- }
- public function get source(): String {
- return __source;
- }
- //重载了Canvas的visible属性,以便在Canvas隐藏HTML页面中的IFrame
- override public function set visible(visible: Boolean): void
- {
- super.visible=visible;
- if (visible)
- {
- ExternalInterface.call("showIFrame");
- }
- else
- {
- ExternalInterface.call("hideIFrame");
- }
- }
- ]]>
- </mx:Script>
- </mx:Canvas>
- IFremaDemo.mxml文件如下:
- <?xml version="1.0" encoding="utf-8"?>
- <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:zq="*">
- <zq:IFrame mouseUp="Iframe.showIFrame=true;Iframe.moveIFrame();Iframe.source=Iframe.source" id="Iframe" source="http://weather.news.qq.com/inc/ss258.htm" x="240" y="23" width="190" height="190"/>
- </mx:Application>
当然少不了js代码,IFremaDemo.html网页是Flex Builder3自动生成的,然后需要加上以下代码:
- <script>
- function moveIFrame(x,y,w,h) {
- var frameRef=document.getElementById("myFrame");
- frameRef.style.left=x;
- frameRef.style.top=y;
- }
- function loadIFrame(url){
- document.getElementById("myFrame").src=url;
- }
- function IFrameShow(display){
- document.getElementById("myFrame").style.visibility=display?"visible":"hidden";
- }
- function IFrameOnBulr()
- {
- //根据id获取flash实例,ListDemo,可以从Embed
- var flash = (navigator.appName.indexOf ("Microsoft") !=-1)?window["IFremaDemo"]:document["IFremaDemo"];
- //调用ActionScript注册的回调方法
- flash.IFrameOnBulr();
- }
- </script>
- <iframe id="myFrame" name="myFrame" onblur="this.style.visibility='visible';IFrameOnBulr();" width="189" height="190" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no" style="position:absolute;"></iframe>
转自:http://www.cnblogs.com/YNLDY/archive/2012/02/07/2340968.html
Flex嵌入HTML页面的更多相关文章
- [Flex] IFrame系列 —— 嵌入本地页面两种方式source和content(html页面和html代码)
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- WebIM(5)----将WebIM嵌入到页面中
在之前的文章中,已经开发了一个简单的WebIM,但是这个WebIM是在独立的页面中的,今天发布的WebIM是一个可以嵌入到自己网页中的版本,你只需添加少量的代码,就可以在页面中嵌入一个WebIM.不过 ...
- iPhone的App嵌入html页面问题
测试环境:iPhone ios 11.0.3 问题:iPhone App嵌入HTML页面,页面拉动到底部时,手势从屏幕底部边缘开始往上拉动,页面出现白色图层,且html页面一屏外的会卡住,无法滚动,需 ...
- react native (2) 嵌入h5页面 设置顶部导航
嵌入h5页面 1.新建好页面 2. import { WebView } from 'react-native'; 3.<WebView source={{ uri: '要引入的页面路径' }} ...
- vue在页面嵌入别的页面或者是视频2
vue在页面嵌入别的页面或者是视频 以下是嵌入页面 <iframe name="myiframe" id="myrame" src="http: ...
- Saiku通过iframe嵌入web页面(六)
Saiku通过iframe嵌入系统页面 前提: Saiku已安装好,并且配置了数据源,熟练了saiku的基本使用. 一.将整个Saiku嵌入页面 在web项目中,新建index.jsp页面,内容如下: ...
- SVG系列教程:SVG简介与嵌入HTML页面的方式
地址:http://www.w3cplus.com/html5/svg-introduction-and-embedded-html-page.html 随着技术向前的推进,SVG相关的讨论也越渐频繁 ...
- SSI注入--嵌入HTML页面中的指令,类似jsp、asp对现有HTML页面增加动态生成内容,见后面例子
SSI注入漏洞总结 from:https://www.mi1k7ea.com/2019/09/28/SSI%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E%E6%80%BB%E ...
- 安卓 apk 嵌入H5页面只显示部分
安卓 apk 嵌入H5页面只显示部分(有空白页出现) 解决方案 没有加载的是js部分,需要在安卓那边加上一串代码 webView.getSetting().setDomStorageEnabled(t ...
随机推荐
- fedora kde桌面系统配置
本文向大家分享个人将fedora操作系统作为工作生活首选桌面系统的一些配置经验,系统版本与fedora最新版本保持一致,当前为fedora 25. #添加rpm源su -c 'dnf install ...
- 安卓自定义View教程目录
基础篇 安卓自定义View基础 - 坐标系 安卓自定义View基础 - 角度弧度 安卓自定义View基础 - 颜色 进阶篇 安卓自定义View进阶 - 分类和流程 安卓自定义View进阶 - Canv ...
- js中传统事件绑定模拟现代事件处理
大家都知道,IE中的现代事件绑定(attachEvent)与W3C标准的(addEventListener)相比存在很多问题, 例如:内存泄漏,重复添加事件并触发的时候是倒叙执行等. 下面是用传统事件 ...
- 你的项目刚刚启动?是时候考虑Globalization了!
今天继续由SAP成都研究院非典型程序猿, 菜园子小哥王聪给大家带来分享. 关于这个很长的定语的由来,请参考这篇文章,里面有王聪的背景介绍,包括他种菜的特长:当我用UI5诊断工具时我用些什么. 秋天到了 ...
- SEO 第一章
SEO 第一章 第一章:SEO基础知识 第二章:搜索引擎基础 第三章:关键词分析 第四章:TDK优化 第五章:网站的URL优化 第六章:网站的内链优化 第七章:代码优化 第八章:网站的内容优化 第九 ...
- 聊天室(C++客户端+Pyhton服务器)3.群功能添加
创建群 数据库 group_table(user, name) grpuser_table(grpname,user) 按下添加群按钮 // 创建群组void CUserDialog::OnBnCli ...
- 摄像头调用代码 笔记本的话,本身有一个摄像头,由于用的usb摄像头,需要把笔记本的摄像头禁用后,再使用
摄像头调用代码 笔记本的话,本身有一个摄像头,由于用的usb摄像头,需要把笔记本的摄像头禁用后,再使用 <!DOCTYPE html> <html lang="en&quo ...
- docker 框架概述
docker的框架 docker 使用传统的client-server架构模式,用户端通过docker client 与docker daemon 建立通信,并将请求发送给后者,而docker后端时 ...
- flask学习规划
实现基本登录注册: 留言板功能: 并且部署到服务器: 预计完成时间6.16:. 后续页面美化: 各种其他功能的探索一个月时间: 并行地学习python,java,css,html,js,sql 暑假预 ...
- JavaEE-02 JSP数据交互01
学习要点 request对象 response对象 转发与重定向 session对象 include指令 课程回顾 需求描述:编写JSP页面,计算2000—3000年中存在几个闰年. 实现分析:判断闰 ...