Archive for the ‘Javascript’ Category

js与flash交互

星期六, 二月 6th, 2010

在html页面里js调用swf里的方法,以及swf调用js函数。
在as中:

ExternalInterface.call("js函数名“,参数1,参数2,....);//flash调用js
ExternalInterface.addCallback("js函数名", as对应方法);//添加js对应的回调函数。

在html中:
关健是要先获取dom里的flash节点对象.假定为swfobj,
js调用方法为:swfobj.方法名(参数1,参数2);
例如:
as中:

ExternalInterface.addCallback("play", jsplay)
function jsplay(a,b,c){
//do someting
}

则js中可为:
swfobj.play(”a”,”b”,”c”);
js调用时需要对object,embed中的AllowScriptAccess做设定,默认值是: sameDomain,如果跨域的需要设为always,还要对其as中的Security.allowDomain进行设定,图方便可直接设为 Security.allowDomain(*);

补充一个比较杯具的问题:
除纯正的IE之外所有IE内核的浏览器,例如:傲游,TT,世界之窗等等,在js调用flash时会出现安全沙箱的问题。貌似是AllowScriptAccess无效了,其真正原因是因为这些外壳浏览器的缓存机制的问题。比较恶心的作法是针对IE内核的浏览器在引用swf文件时,在其URL地后增加一个随机变量。通过动态改变URL方式清除缓存。本来还以为是这些浏览器有问题,后来细想一下,还是adobe的问题。

jquery+swfobject代码:

var r=$.browser.msie?"?"+Math.random():"";
swfobject.embedSWF("main.swf"+r, "slides", "500", "260", "9.0.0","",
{}, {"AllowScriptAccess":"always"}, {"id":"flash_map","name":"flash_map"});

JS滚动条

星期四, 七月 2nd, 2009

花了几天时间用js实现模拟滚动条,支持圆角

兼容性: IE6/7/8/ 通过测试
Firefox3/Opera10/ 非文本输入不支持鼠标滚动
Chrome2/Safari4/ 不支持鼠标滚动
文件下载:dscroll.js (右健另存为)   实例 (全文…)

闭包!!!

星期三, 六月 17th, 2009

刚接触到这个词,晕忽了许久。

1.闭包是在其词法上下文中引用了自由变量的函数。
2.如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被定义为闭包。
3.在实现深约束时,需要创建一个能显式表示引用环境的东西,并将它与相关的子程序捆绑在一起,这样捆绑起来的整体被称为闭包。 (全文…)

让ie支持DOM2事件模型写法

星期三, 六月 10th, 2009

这几天要用js做点东西,又不用现成的框架。
习惯了as3的语法,对ie的window.evnet事件机制忒不习惯。敲了一些代码,让ie8支持dom2事件模型,当然只是泡冒模型。 (全文…)

js+flash实现一次上传多个文件

星期二, 一月 15th, 2008

在老外一个博客中发现一个好东西.
利用flash调用文件选择对方框的功能,给合js,实现可以一次选择多个文件,并且可以定制文件类型.
绝对的好东西.
老外的博客地址:http://digitarald.de
上传组件演示地址:http://www.dansion.com/FancyUpload/FancyUpload.html

js接收post变量

星期一, 三月 26th, 2007

实现URL字符串提取,为js传递变量提供别一种方法.

<script language="javascript" >
/*
 *————— Read.htm —————–
 * Request[key]
 * 功能:实现URL字符串提取,Request("AAA")
 * 参数:key,字符串.
 * 实例:alert(Request["AAA"])
 *————— Request.htm —————–
 */
var url=location.search;
var Requ[---]est = new Object();
if(url.indexOf("?")!=-1)
{
    var str = url.substr(1)  //去掉?号
    strs = str.split("&");
    for(var i=0;i<strs.length;i++)
    {
        Request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);
    }
}
document.write(Request["username"]);
document.write(Request["sex"]);
//alert(Request["username"])
//alert(Request["sex"])
</script>