<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Dansion&#039;s 日志 &#187; Javascript</title>
	<atom:link href="http://www.dansion.com/blog/category/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dansion.com/blog</link>
	<description>学无止境～～～～～～～</description>
	<lastBuildDate>Thu, 29 Sep 2011 09:25:36 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>js与flash交互</title>
		<link>http://www.dansion.com/blog/javascript/js-flash-as.html</link>
		<comments>http://www.dansion.com/blog/javascript/js-flash-as.html#comments</comments>
		<pubDate>Sat, 06 Feb 2010 09:03:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Flash ActionScript]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/?p=902</guid>
		<description><![CDATA[在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(&#8221;a&#8221;,&#8221;b&#8221;,&#8221;c&#8221;);
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"});

]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/javascript/js-flash-as.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JS滚动条</title>
		<link>http://www.dansion.com/blog/javascript/js-scroller.html</link>
		<comments>http://www.dansion.com/blog/javascript/js-scroller.html#comments</comments>
		<pubDate>Thu, 02 Jul 2009 07:28:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[其它]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/?p=836</guid>
		<description><![CDATA[花了几天时间用js实现模拟滚动条，支持圆角
兼容性: IE6/7/8/ 通过测试
Firefox3/Opera10/ 非文本输入不支持鼠标滚动
Chrome2/Safari4/ 不支持鼠标滚动
文件下载：dscroll.js (右健另存为)   实例
DScroller(id,w);
实例参数：
id:dom对象的id号，不可省略.
w:滚动条的宽度,默认15px,可省略。支持圆角，所以滚动按扭最小高度为w*2
方法：
append();
refresh();//重绘滚动
width();
height();
scrollTo(n); n为0-100
属性：(皆为dom节点)
panel;
content;
scroller;
dom结构变化：
原DOM对象：
&#60;div class=&#8221;classA&#8221;&#62;内容&#60;/div&#62;
调用js方法之后：
&#60;div class=&#8221;classA&#8221;&#62;
&#160;&#160;&#160;&#160;&#60;div&#62;内容&#60;/div&#62;
&#160;&#160;&#160;&#160;&#60;div class=&#8221;scroller&#8221;&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;div class=&#8221;scrollBar&#8221;&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;div class=&#8221;top&#8221;&#62;&#60;/div&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;div class=&#8221;end&#8221;&#62;&#60;/div&#62;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#60;/div&#62;
&#160;&#160;&#160;&#160;&#60;/div&#62;
&#60;/div&#62;
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/javascript/js-scroller.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>闭包!!!</title>
		<link>http://www.dansion.com/blog/javascript/closure.html</link>
		<comments>http://www.dansion.com/blog/javascript/closure.html#comments</comments>
		<pubDate>Wed, 17 Jun 2009 09:52:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/?p=788</guid>
		<description><![CDATA[刚接触到这个词，晕忽了许久。
1.闭包是在其词法上下文中引用了自由变量的函数。
2.如果在一个内部函数里，对在外部作用域（但不是在全局作用域）的变量进行引用，那么内部函数就被定义为闭包。
3.在实现深约束时，需要创建一个能显式表示引用环境的东西，并将它与相关的子程序捆绑在一起，这样捆绑起来的整体被称为闭包。
闭包！是不越看越晕啊，还不如直接用代码来说明：
例子1，创造一个函数。该函数内部的x是无法外部访问的。
var myfunc=function(){
var x=0;
return function(){
return x;
}
};
例子2：创造一个方法。
var addx=function(x) {
return function(y) {return x+y;};
}
a=addx(8); //先定义x
alert(a(10));//运算8+10
结果：18
例子3，创造一个对象。x同样是无法外部访问的。注意最后一行的()，作用是马上调用构造出来的函数。
var myobj=function(){
var x=0;
return {
fun1:function(){alert(x+1);},
fun2:function(){alert(x+1);}
};
}();
例子4:利用闭包给attachEvent侦听函数增加参数
dom节点.attachEvent(&#8221;onclick&#8221;,onclickfun(arg1,arg2));
 
var onclickfun=function(arg1,arg2){
return function(){
alert(arg1);
alert(arg2); //代码块，arg1,arg2
}
}
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/javascript/closure.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让ie支持DOM2事件模型写法</title>
		<link>http://www.dansion.com/blog/javascript/ie-dom2.html</link>
		<comments>http://www.dansion.com/blog/javascript/ie-dom2.html#comments</comments>
		<pubDate>Tue, 09 Jun 2009 16:41:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/?p=782</guid>
		<description><![CDATA[这几天要用js做点东西，又不用现成的框架。
习惯了as3的语法，对ie的window.evnet事件机制忒不习惯。敲了一些代码，让ie8支持dom2事件模型,当然只是泡冒模型。
function $(s){
if(window.container==undefined){
window.container=new Object();//空器，让每个$(&#8221;id&#8221;)同一id得到是同一个
}
if(window.container[s]==undefined){
obj=document.getElementById(s);
window.container[s]=obj;
if(getBrowser(&#8221;MSIE&#8221;)){
obj.eventListeners=new Array();  //事件列表容器
obj.addEvent=function(action,obj,bubble,fun){//委托处理事件
var delegate=function(){
window.event.cancelBubble=bubble;
//丢出事件
var evt=new Event(action,window.event.srcElement,obj,bubble);
if(action==&#8221;onmouseover&#8221;){
evt.relatedTarget=window.event.fromElement;
}else if(action==&#8221;onmouseout&#8221;){
evt.relatedTarget=window.event.toElement;
}
evt.clientX=window.event.clientX;
evt.clientY=window.event.clientY;
evt.screenX=window.event.screenX;
evt.screenY=window.event.screenX;
fun(evt);
}
obj.eventListeners.push({func:fun,delegateFunc:delegate});
return delegate;
}
obj.addEventListener=function(action,fun,bubble){//给对象增加addEventListener方法
action=&#8221;on&#8221;+action;
obj.attachEvent(action,obj.addEvent(action,obj,bubble,fun));
}
obj.removeEventListener=function(action,fun,bubble){//给对象增加removeEventListener方法
for(var i=0;i&#60;obj.eventListeners.length;i++){
if(obj.eventListeners[i].func==fun){
action=&#8221;on&#8221;+action;
obj.detachEvent(action,obj.eventListeners[i].delegateFunc);
}
}
}
return obj;
}else{
//非IE浏览器，只测了FF,google的
var obj=document.getElementById(s);
obj.contains=function(tgt){//contains方法很实用，flash as里也有，就给添加一个。
while(tgt!=null&#38;&#38;typeof(tgt.tagName)!=&#8221;undefind&#8221;){
if(tgt==this){return true};
tgt=tgt.parentNode;
}
return false;
}
return obj;
}
}else{
return window.container[s];
}
}
//判断是否是指定浏览器
function getBrowser(browserType){
var browser=navigator.userAgent;
if (browser.indexOf(browserType)&#62;0){
return true;
}
}
//事件&#8221;类&#8221;
function Event(type,target,currentTarget,bubble){
this.currentTarget=currentTarget;
this.type=type;
this.target=target;
this.bubble=bubble;
this.toString=function(){
return &#8220;[Event type="+type+" bubble="+bubble+" target:"+target.name+" currentTarget="+currentTarget.name+"]&#8220;;
}
}
先这样了，有空再优化扩展一下。
应用例子：
$(&#8221;div1&#8243;).addEventListener(&#8221;mouseover&#8221;,eventover,false);
$(&#8221;div1&#8243;).addEventListener(&#8221;mouseout&#8221;,eventout,false);
function eventover(e){
if(!e.currentTarget.contains(e.relatedTarget)){
alert(&#8221;in&#8221;);
}
}
function eventout(e){
if(!e.currentTarget.contains(e.relatedTarget)){
alert(&#8221;out&#8221;);
}
}
function cancel(){
$(&#8221;div1&#8243;).removeEventListener(&#8217;mouseout&#8217;,eventout,false);
$(&#8221;div1&#8243;).removeEventListener(&#8217;mouseover&#8217;,eventover,false);
}
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/javascript/ie-dom2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>js+flash实现一次上传多个文件</title>
		<link>http://www.dansion.com/blog/javascript/fancyupload.html</link>
		<comments>http://www.dansion.com/blog/javascript/fancyupload.html#comments</comments>
		<pubDate>Tue, 15 Jan 2008 15:40:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[FancyUpload]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/archives/31</guid>
		<description><![CDATA[在老外一个博客中发现一个好东西.利用flash调用文件选择对方框的功能,给合js,实现可以一次选择多个文件,并且可以定制文件类型.绝对的好东西.老外的博客地址:http://digitarald.de上传组件演示地址:http://www.dansion.com/FancyUpload/FancyUpload.html
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/javascript/fancyupload.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>js接收post变量</title>
		<link>http://www.dansion.com/blog/javascript/js-receive-post-variables.html</link>
		<comments>http://www.dansion.com/blog/javascript/js-receive-post-variables.html#comments</comments>
		<pubDate>Mon, 26 Mar 2007 15:21:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.dansion.com/blog/archives/18</guid>
		<description><![CDATA[实现URL字符串提取,为js传递变量提供别一种方法.
&#60;script&#160;language=&#34;javascript&#34;&#160;&#62;/*&#160;*&#8212;&#8212;&#8212;&#8212;&#8212;&#160;Read.htm&#160;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#160;*&#160;Request[key]&#160;*&#160;功能:实现URL字符串提取,Request(&#34;AAA&#34;)&#160;*&#160;参数:key,字符串.&#160;*&#160;实例:alert(Request[&#34;AAA&#34;])&#160;*&#8212;&#8212;&#8212;&#8212;&#8212;&#160;Request.htm&#160;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#160;*/var&#160;url=location.search;var&#160;Requ[---]est&#160;=&#160;new&#160;Object();if(url.indexOf(&#34;?&#34;)!=-1){&#160;&#160;&#160;&#160;var&#160;str&#160;=&#160;url.substr(1)&#160;&#160;//去掉?号&#160;&#160;&#160;&#160;strs&#160;=&#160;str.split(&#34;&#038;&#34;);&#160;&#160;&#160;&#160;for(var&#160;i=0;i&#60;strs.length;i++)&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Request[strs[i].split(&#34;=&#34;)[0]]=unescape(strs[i].split(&#34;=&#34;)[1]);&#160;&#160;&#160;&#160;}}document.write(Request[&#34;username&#34;]);document.write(Request[&#34;sex&#34;]);//alert(Request[&#34;username&#34;])//alert(Request[&#34;sex&#34;])&#60;/script&#62;
]]></description>
		<wfw:commentRss>http://www.dansion.com/blog/javascript/js-receive-post-variables.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

