网页中flash数据抓取(flash安全性对象中叫“appName调js错误层出不穷”的属性)

优采云 发布时间: 2021-09-28 23:02

  网页中flash数据抓取(flash安全性对象中叫“appName调js错误层出不穷”的属性)

  背景介绍:

  最近在做一个项目,涉及图片选择、裁剪、上传等,由于浏览器安全问题,js无法获取文件中选择的文件路径,HTML5实现的照片裁剪、抠图等功能不同的。大浏览器的兼容性,实在不敢太大胆。这时候就引入了flash,然后js做不到的事情都让flash来做,然后js来控制页面元素。就这样开始了js和as的交互之旅。听flash的大叔说,flash调优js的功能风格很容易调,但js调as却不容易。最后的情况是as调整js错误无休止,花了很多时间就搞定了。当然,

  重要内容

  //获取flash对象

  函数 getSWF(name){

  var e=document.getElementById(name);

  return (navigator.appName.indexOf("Microsoft") != -1)?e:e.getElementsByTagName("embed")[0];

  }

  为什么要这样做,因为在浏览器中嵌入flash一般采用如下格式:

  因为IE(微软的),其他的(Mozilla的Firefox,谷歌的chrome等)在解析HTML文档上有差异,所以如果你面对不同的浏览器,如果你使用通用的方法,你不知道哪里错了,但你是真的错了!

  详细代码

  上面的函数getSWF(),顾名思义就是获取嵌入到文档中的flash对象。navigator 是浏览器对象,Navigator 对象收录浏览器的信息。

  相关资料可参考:;

  所以后面的 appName 就是 Navigator 对象中名为“appName”的属性。该属性记录了navigator.appName获取的浏览器名称。目前五大浏览器的appName取值如下:

  IE:浏览器名称:Microsoft Internet

  FF、Chrome、Opera、Safari:浏览器名称:Netscape

  浏览器 appName 测试地址:;

  indexOf()是一个Javascript函数,indexOf()方法可以返回指定字符串值在字符串中第一次出现的位置

  stringObject.indexOf("str",num); stringObject是要搜索的字符串对象,str是要搜索的字符串,num是起始位​​置,如果查询发现stringObject中存在字符串“str”,则返回第一个出现位置,如果要检索的字符串值没有出现,方法返回-1;

  var e = document.getElementById(name); 就是获取文档中属性id值为name的节点对象,并将这个对象赋值给e,

  return (navigator.appName.indexOf("Microsoft") != -1)?e:e.getElementsByTagName("embed")[0]; 看起来很复杂,开头很简单,这里是一个三木算术(学过编程的应该都知道),具体格式是if(a)?b:c;也就是说当if(a)为真时,值为b,如果(a)不为真,则取值为c,这个长代码可以分解为if(a)?b:c;的格式。

  navigator.appName.indexOf("Microsoft")!=-1 e e.getElementsByTagName("embed")[0] 这三部分

  if(navigator.appName.indexOf("Microsoft")!=-1){ alert("我的浏览器不是 IE 核心"); }else{"我的浏览器是 IE 核心"}

  当弹出窗口显示“我的浏览器不是IE核心”时,说明我的浏览器名称不收录“Microsoft”,即没有使用IE。此时要获取的flash对象就是文档中的对象。如果是IE浏览器,则获取该对象。无论获取到哪个对象,最后都必须使用return返回调用函数,这样才能在不同的浏览器中获取对应的flash对象。

  总体方案:

  获取到flash对象后,可以调用flash中的方法,或者flash中的属性。

  var objName = getSWF("FlashToJS");

  //调用对象的flash_selFiles方法

  如果(对象名称){

  objName.flash_cutPic(arg);

  }别的{

  console.log("没有获得对象");

  }

  这被转移到 flash 中的 flash_selFiles() 方法。

  最后的想法

  尽量减少页面中flash的使用,尤其不要过分依赖flash,as和js的交互还是隐藏着很多陷阱。报告结束!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线