网页中flash数据抓取(Flash是可以轻松与网页交互数据的,不然为何会有这么大的生命力呢? )
优采云 发布时间: 2022-01-31 00:14网页中flash数据抓取(Flash是可以轻松与网页交互数据的,不然为何会有这么大的生命力呢?
)
Flash可以很方便的和网页进行数据交互,不然Flash怎么会有这么大的生命力呢?只是这种方式编程比较麻烦,需要调试Flash,然后在服务器上调试。但是,这种方法可以取得很好的效果。Flash强大的绘图和图形功能可以与网页的参数传递链接,使用后端服务器语言可以达到很好的效果。
下面的例子使用 ActionScript3.0 来说明这个问题,如下图:
IE6效果:
火狐效果:
一旦浏览器安装了 Flash 插件,Flash 就可以轻松地与网页通信。无论在任何浏览器中,基本上用户现在都会安装 Flash 组件。可以说几乎没有不安装Flash组件的浏览器。
一、Flash 部分
1、首先新建一个ActionScript3.0 Flash,创建完成后保存为webPage.fla。这次Flash不需要这么大的尺寸,不然网页会有很多空白,设置500x100px大小就可以了。播放器的版本可以默认使用,因为用户浏览器的Flash组件会自动更新。不要在意这个。
2、通过Window->Component,或者Ctrl+F7打开组件面板,使用内置的按钮、标签文字、输入框组件来排列界面。
3、拖出如下界面,设置各个组件的属性如下,设置其文本值,即要显示的文本,并设置部分要控制的组件的实例名称,即Id ,例如将按钮设置为Button1,输入框设置为EditField1,一会儿网页的JavaScript控制的标签文本的文本值会被清除,其实例名称为Label1。
4、 然后点击第一帧打开动作面板,或者点击F9,编写如下代码:
import flash.external.ExternalInterface;
flash.system.Security.allowDomain("*");
flash.system.Security.allowInsecureDomain("*");//设置允许所有网站都允许Flash与网页之间交互
Button1.addEventListener("click",function(){//点击Button1这个按钮
ExternalInterface.call("show",EditField1.text);
//则调用JavaScript中的function show(message){}函数,其中message这个参数值,由EditField1输入的东西填充
});
function JavaScriptShow1(message1){
//定义一个函数,一旦这个函数触发则把传来的值,填充Label1这个标签文本
Label1.text=message1;
}
ExternalInterface.addCallback("JavaScriptShow1",JavaScriptShow1);
//注册JavaScriptShow1这个函数,其对外名称为JavaScriptShow1,一般都应该相同的
//网页调用Flash对象的JavaScriptShow1的方法,则相当于调用ActionScript中的JavaScriptShow1(message1){}函数
5、至此Flash部分完成,选择File->Publish,打开保存Flash的文件夹。其实上面的内容并不比“[ActionScript] Helloworld of ActionScript3.0”(点击打开链接)复杂多少,只是多两句注册了ActionScript和JavaScript的交互。
二、网页部分
1、之后,Flash 应该被放置在网页上。Flash发布后,网页中会生成两个东西,一个html和一个swf。核心文件是 .swf 文件。html文件不能复制,只能借用里面的代码,否则不兼容野狐狸、谷歌等浏览器。
这个webPage.html页面是由Flash生成的,可以参考的代码如下:
2、因为 Flash 禁用了 Flash 调用本地文件的能力。您只能将此 webPage.swf 复制到您的服务器进行调试。然后在服务器上创建一个新的 .html 页面。这里以 swf.html 和 webPage.swf 同目录为例。如果有不同的例子,请自行设置绝对路径。假设它是 swf.html。swf.html的HTML布局如下:
webPage
Flash与网页交互
发信息给Flash!
后续的 JavaScript 布局是 ActionScript 与 JavaScript 交互的核心。代码如下:
//给ActionScript所调用的JavaScript函数,message这个参数被ActionScript传递过来的值所填充
function show(message){
alert(message);
}
//获取Flash对象的函数,不同的对象有不同的方法。为了兼容,只能这样写。
function getFlash(movieName){
if (window.document[movieName]) {
window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet") == -1) {
if (document.embeds && document.embeds[movieName])
return document.embeds[movieName];
}
else {
return document.getElementById(movieName);
}
}
//获取Flash对象
var flash1 = getFlash('webPage');
//JavaScript调用ActionScript中注册为JavaScriptShow1的函数
function toFlash(){
var text1 = document.getElementById("text1").value;
flash1.JavaScriptShow1(text1);
}
三、总结
总结一下,webPage.swf和swf.html的交互如下: