<?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>shooting's sky &#187; javascript</title>
	<atom:link href="http://anfirst.cn/archives/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://anfirst.cn</link>
	<description>专心每一天</description>
	<lastBuildDate>Fri, 11 May 2012 04:49:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>javascript 表单 submit()错误</title>
		<link>http://anfirst.cn/archives/983</link>
		<comments>http://anfirst.cn/archives/983#comments</comments>
		<pubDate>Mon, 18 Oct 2010 12:51:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[全部文章]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php编程]]></category>
		<category><![CDATA[前台开发]]></category>
		<category><![CDATA[案例]]></category>

		<guid isPermaLink="false">http://anfirst.cn/?p=983</guid>
		<description><![CDATA[做个简单的表单验证，调用表单对象的submit对象竟然出现submit is not a function这样的错误，花了半个晚上的时间，终于找出了原因 原来 js对submit关键字敏感，而我的表单中有按钮name=”submit”&#8230; 把所有的name=”submit”去掉一切正常 吐血。。。]]></description>
			<content:encoded><![CDATA[<p>做个简单的表单验证，调用表单对象的submit对象竟然出现submit is not a function这样的错误，花了半个晚上的时间，终于找出了原因</p>
<p>原来 js对submit关键字敏感，而我的表单中有按钮name=”submit”&#8230;</p>
<p>把所有的name=”submit”去掉一切正常</p>
<p>吐血。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/983/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>纯javascript 单行向上滚动效果代码</title>
		<link>http://anfirst.cn/archives/981</link>
		<comments>http://anfirst.cn/archives/981#comments</comments>
		<pubDate>Mon, 20 Sep 2010 01:39:29 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[前台开发]]></category>
		<category><![CDATA[案例]]></category>

		<guid isPermaLink="false">http://anfirst.cn/?p=981</guid>
		<description><![CDATA[&#60;style&#62; *{margin:0;padding:0;} #scrollDiv {height:30px;overflow:hidden;position:relative;margin:50px;} #scrollUl {position:absolute;} #scrollUl li{height:30px;line-height:30px;} &#60;/style&#62; &#60;script type="text/javascript"&#62; function scrollOneStep(obj) { var ul = document.getElementById(obj); var li = ul.getElementsByTagName("li"); var li_move = li.item(0); var line = 0 - parseInt(li_move.clientHeight); var speed = 10; var pix = 0; t2 = setInterval(function(){ if(pix &#62; line){ ul.style.top = ""+pix + "px"; pix --; }else{ clearInterval(t2); [...]]]></description>
			<content:encoded><![CDATA[<pre class="brush:css">&lt;style&gt;
*{margin:0;padding:0;}
#scrollDiv {height:30px;overflow:hidden;position:relative;margin:50px;}
#scrollUl {position:absolute;}
#scrollUl li{height:30px;line-height:30px;}
&lt;/style&gt;</pre>
<pre class="brush:js">
&lt;script type="text/javascript"&gt;
function scrollOneStep(obj)
{
var ul = document.getElementById(obj);
var li = ul.getElementsByTagName("li");
var li_move = li.item(0);
var line = 0 - parseInt(li_move.clientHeight);
var speed = 10;
var pix = 0;
t2 = setInterval(function(){
if(pix &gt; line){
ul.style.top = ""+pix + "px";
pix --;
}else{
clearInterval(t2);
}
},speed);

ul.style.top += parseInt(ul.style.top)+30+"px";

ul.removeChild(li_move);
ul.appendChild(li_move);
ul.style.top = "0"

}

function scroll(obj)
{
var t= setInterval(function(){scrollOneStep(obj);},1000);
}
&lt;/script&gt;
</pre>
<pre class="brush:html">
&lt;div id="scrollDiv"&gt;
&lt;ul id="scrollUl"&gt;
&lt;li&gt;164101***400&lt;/li&gt;
&lt;li&gt;334205***400&lt;/li&gt;
&lt;li&gt;164101***400&lt;/li&gt;
&lt;li&gt;334205***400&lt;/li&gt;
&lt;li&gt;164101***400&lt;/li&gt;
&lt;li&gt;334205***400&lt;/li&gt;
&lt;li&gt;164101***400&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;script language="javascript"&gt; scroll('scrollUl'); &lt;/script&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/981/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ajax 返回的innerHTML里面的javascript代码执行问题及Demo [转载]</title>
		<link>http://anfirst.cn/archives/972</link>
		<comments>http://anfirst.cn/archives/972#comments</comments>
		<pubDate>Mon, 13 Sep 2010 08:57:44 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://anfirst.cn/?p=972</guid>
		<description><![CDATA[解决了一个困扰我许久的问题，用过AJAX的人可能会知道，当把从服务器返回xhr.responseText的数据设定给innerHTML时， 里面的JS代码并不能够执行，查了很多资料，终于找到一个简单而且可行的办法，就是把JS代码封装到一个DIV中通过xhr.responseText打 包给innerHTML，然后把&#60;script&#62;&#60;/script&#62;标签扒下去，在通过eval()函数执行JS代码（思想转载 自这 里），这里以弹出对话框为例，示例如下： &#60;!&#8211;这是innerHTML的内容&#8211;&#62; &#60;div id=”a”&#62; &#60;script&#62; alert(“aa”); &#60;script&#62; &#60;/div&#62; &#60;!&#8211;这是调用JS的主页内容&#8211;&#62; var pageInfo = xhr.responseText; document.getElementById(“pageInfo”).innerHTML = pageInfo; eval(document.getElementById(“aa”).innerHTML.replace(/&#60;script&#62;&#124;&#60;\/script&#62;/,”)); //将&#60;script&#62;标签替换掉,这样才能被eval()函数执行 结果出现了显示”aa”的对话框！ 但是问题又出现了，如果执行2句或者两句以上的JS代码就会出现错误了！ 这样我们就可以把需要执行的多行JS代码封装成一个方法直接放到需要调用该JS代码的主页面里，然后再被调用的页面里写上这个方法名就可以了，这里 以弹出2个对话框为例，示例如下： &#60;!&#8211;这是innerHTML的内容&#8211;&#62; &#60;div id=”a”&#62; &#60;script&#62; doit(); &#60;script&#62; &#60;/div&#62; &#60;!&#8211;这是调用JS的主页内容&#8211;&#62; var pageInfo = xhr.responseText; document.getElementById(“pageInfo”).innerHTML = pageInfo; eval(document.getElementById(“aa”).innerHTML.replace(/&#60;script&#62;&#124;&#60;\/script&#62;/,”)); //将&#60;script&#62;标签替换掉,这样才能被eval() function doit(){ alert(“aa”); alert(“bb”); } 结果出现了”aa” “bb”两个对话框! 这样就完美解决了ajax 返回的innerHTML里面的javascript代码执行问题，一些复杂的JS函数都可以，而且一些jQuery的方法也可以哦！ 这是在网上找的资料，依据以此，我写了例子来 验证： Defalut.aspx [...]]]></description>
			<content:encoded><![CDATA[<p>解决了一个困扰我许久的问题，用过AJAX的人可能会知道，当把从服务器返回xhr.responseText的数据设定给innerHTML时，   里面的JS代码并不能够执行，查了很多资料，终于找到一个简单而且可行的办法，就是把JS代码封装到一个DIV中通过xhr.responseText打   包给innerHTML，然后把&lt;script&gt;&lt;/script&gt;标签扒下去，在通过eval()函数执行JS代码（思想转载  自这 里），这里以弹出对话框为例，示例如下：</p>
<p>&lt;!&#8211;这是innerHTML的内容&#8211;&gt;</p>
<p>&lt;div id=”a”&gt;</p>
<p>&lt;script&gt;</p>
<p>alert(“aa”);</p>
<p>&lt;script&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!&#8211;这是调用JS的主页内容&#8211;&gt;</p>
<p>var pageInfo = xhr.responseText;</p>
<p>document.getElementById(“pageInfo”).innerHTML = pageInfo;</p>
<p>eval(document.getElementById(“aa”).innerHTML.replace(/&lt;script&gt;|&lt;\/script&gt;/,”));    //将&lt;script&gt;标签替换掉,这样才能被eval()函数执行</p>
<p>结果出现了显示”aa”的对话框！</p>
<p>但是问题又出现了，如果执行2句或者两句以上的JS代码就会出现错误了！</p>
<p>这样我们就可以把需要执行的多行JS代码封装成一个方法直接放到需要调用该JS代码的主页面里，然后再被调用的页面里写上这个方法名就可以了，这里 以弹出2个对话框为例，示例如下：</p>
<p>&lt;!&#8211;这是innerHTML的内容&#8211;&gt;</p>
<p>&lt;div id=”a”&gt;</p>
<p>&lt;script&gt;</p>
<p>doit();</p>
<p>&lt;script&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;!&#8211;这是调用JS的主页内容&#8211;&gt;</p>
<p>var pageInfo = xhr.responseText;</p>
<p>document.getElementById(“pageInfo”).innerHTML = pageInfo;</p>
<p>eval(document.getElementById(“aa”).innerHTML.replace(/&lt;script&gt;|&lt;\/script&gt;/,”));    //将&lt;script&gt;标签替换掉,这样才能被eval()</p>
<p>function doit(){</p>
<p>alert(“aa”);</p>
<p>alert(“bb”);</p>
<p>}</p>
<p>结果出现了”aa” “bb”两个对话框!</p>
<p>这样就完美解决了ajax  返回的innerHTML里面的javascript代码执行问题，一些复杂的JS函数都可以，而且一些jQuery的方法也可以哦！</p>
<p><span style="font-size: medium;">这是在网上找的资料，依据以此，我写了例子来 验证：</span></p>
<p>Defalut.aspx</p>
<p>&lt;%@ Page Language=”C#” AutoEventWireup=”true”  CodeBehind=”Default.aspx.cs” Inherits=”AjaxJsTestWeb._Default” %&gt;</p>
<p>&lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”  “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt;</p>
<p>&lt;html xmlns=”http://www.w3.org/1999/xhtml” &gt;<br />
&lt;head runat=”server”&gt;<br />
&lt;title&gt;无标题页&lt;/title&gt;<br />
&lt;script language=”javascript” type=”text/javascript” &gt;</p>
<p>function getRequest() {<br />
http_request = false;<br />
if (window.XMLHttpRequest) {<br />
//对于Mozilla﹑Netscape﹑Safari等浏览器，创建XMLHttpRequest<br />
http_request = new XMLHttpRequest();<br />
if (http_request.overrideMimeType) {<br />
//如果服务器响应的header不是text/xml，可以调用其它方法修改该header<br />
http_request.overrideMimeType(&#8216;text/xml&#8217;);<br />
}<br />
} else if (window.ActiveXObject) {<br />
// 对于Internet Explorer浏览器，创建XMLHttpRequest<br />
try {<br />
http_request = new ActiveXObject(“Msxml2.XMLHTTP”);<br />
} catch (e) {<br />
try {<br />
http_request = new  ActiveXObject(“Microsoft.XMLHTTP”);<br />
} catch (e) {}<br />
}<br />
}<br />
return http_request;<br />
}<br />
//获得Url 的responseText</p>
<p>function getResponseText(url)<br />
{<br />
http_request=getRequest();<br />
http_request.open(&#8216;GET&#8217;, url, false);<br />
http_request.send(null);</p>
<p>if (http_request.readyState == 4)<br />
{<br />
// 收到完整的服务器响应<br />
if (http_request.status == 200) {<br />
//HTTP服务器响应的值OK<br />
requestdoc = http_request.responseText;<br />
//将服务器返回的字符串写到页面中ID为message的区域<br />
}<br />
else {<br />
requestdoc = http_request.status;<br />
}<br />
}<br />
return requestdoc;<br />
}<br />
//获得Url 的responseXML</p>
<p>//代码片段<br />
function getResponseXml(url)<br />
{<br />
http_request=getRequest();<br />
http_request.open(&#8216;GET&#8217;, url, false);<br />
http_request.send(null);</p>
<p>if (http_request.readyState == 4)<br />
{<br />
// 收到完整的服务器响应<br />
if (http_request.status == 200) {<br />
//HTTP服务器响应的值OK<br />
requestdoc = http_request.responseXML;<br />
//将服务器返回的字符串写到页面中ID为message的区域<br />
}<br />
else {<br />
requestdoc = http_request.status;<br />
}<br />
}<br />
return requestdoc;<br />
}</p>
<p>function TestAjaxJs()<br />
{<br />
http_request=getRequest();<br />
http_request.open(&#8216;GET&#8217;, “containjsText.aspx”, false);<br />
http_request.send(null);</p>
<p>if (http_request.readyState == 4)<br />
{<br />
// 收到完整的服务器响应<br />
if (http_request.status == 200) {<br />
//HTTP服务器响应的值OK<br />
requestdoc = http_request.responseText;<br />
//将服务器返回的字符串写到页面中ID为message的区域<br />
}<br />
else {<br />
requestdoc = http_request.status;<br />
}<br />
}<br />
// debugger;<br />
document.getElementById(“divJsText”).InnerHTML=requestdoc;<br />
alert( document.getElementById(“divJsText”).InnerHTML);<br />
var str;<br />
str=document.getElementById(“divJsText”).InnerHTML.replace(/&lt;script  language=&#8217;javascript&#8217;&gt;|&lt;\/script&gt;/,”);<br />
str=str.replace(/&lt;\/script&gt;/,”);</p>
<p>alert(str);<br />
eval(str);<br />
//  document.write(document.getElementById(“divJsText”).InnerHTML);<br />
return false;<br />
}</p>
<p>&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;form id=”form1&#8243; runat=”server”&gt;<br />
&lt;div&gt;<br />
&lt;div id=”divJsText” &gt;&lt;/div&gt;<br />
&lt;asp:Literal ID=”ltrJsText”   runat=”server”&gt;&lt;/asp:Literal&gt;&lt;asp:Label ID=”lblJsText”   runat=”server”&gt;&lt;/asp:Label&gt;<br />
&lt;asp:Button ID=”btnAjax” runat=”server”  Text=”Ajax请求返回带有JS脚本的文本 JS脚本执行”  OnClientClick=”return  TestAjaxJs();”/&gt;<br />
&lt;/div&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>ContainJsText.aspx.cs 代码页面</p>
<p>两种情况：</p>
<p>(1)多个JS语句</p>
<p>namespace AjaxJsTestWeb<br />
{<br />
public partial class ContainJsText : System.Web.UI.Page<br />
{<br />
protected void Page_Load(object sender, EventArgs e)<br />
{<br />
StringBuilder jsText = new StringBuilder();<br />
jsText.AppendLine(“&lt;script   language=&#8217;javascript&#8217;&gt;function   doit(){alert(&#8216;哈哈,我执行了啊!&#8217;);alert(&#8216;哈哈,我再次执行了啊!&#8217;);}   doit();&lt;/script&gt;”);<br />
Response.Write(jsText.ToString().Trim());<br />
Response.End();<br />
}<br />
}<br />
}</p>
<p>(2) 就一个js语句</p>
<p>namespace AjaxJsTestWeb<br />
{<br />
public partial class ContainJsText : System.Web.UI.Page<br />
{<br />
protected void Page_Load(object sender, EventArgs e)<br />
{<br />
StringBuilder jsText = new StringBuilder();<br />
jsText.AppendLine(“&lt;script  language=&#8217;javascript&#8217;&gt;alert(&#8216;哈哈,我执行了啊!&#8217;)&lt;/script&gt;”);<br />
Response.Write(jsText.ToString().Trim());<br />
Response.End();<br />
}<br />
}<br />
}</p>
<p>转自 http://www.taotechinfo.com/collect/2010724/n807115732.html</p>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/972/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>javascript 获取滚动条高度+常用js页面宽度与高度[转]</title>
		<link>http://anfirst.cn/archives/957</link>
		<comments>http://anfirst.cn/archives/957#comments</comments>
		<pubDate>Thu, 20 May 2010 08:27:47 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://anfirst.cn/?p=957</guid>
		<description><![CDATA[/******************** * 取窗口滚动条高度 ******************/ function getScrollTop() { var scrollTop=0; if(document.documentElement&#38;&#38;document.documentElement.scrollTop) { scrollTop=document.documentElement.scrollTop; } else if(document.body) { scrollTop=document.body.scrollTop; } return scrollTop; } /******************** * 取窗口可视范围的高度 *******************/ function getClientHeight() { var clientHeight=0; if(document.body.clientHeight&#38;&#38;document.documentElement.clientHeight) { var clientHeight = (document.body.clientHeight&#60;document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight; } else { var clientHeight = (document.body.clientHeight&#62;document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight; } return clientHeight; } /******************** * 取文档内容实际高度 *******************/ function getScrollHeight() { return [...]]]></description>
			<content:encoded><![CDATA[<p>/********************<br />
* 取窗口滚动条高度<br />
******************/<br />
function getScrollTop()<br />
{<br />
var scrollTop=0;<br />
if(document.documentElement&amp;&amp;document.documentElement.scrollTop)<br />
{<br />
scrollTop=document.documentElement.scrollTop;<br />
}<br />
else if(document.body)<br />
{<br />
scrollTop=document.body.scrollTop;<br />
}<br />
return scrollTop;<br />
}</p>
<p>/********************<br />
* 取窗口可视范围的高度<br />
*******************/<br />
function getClientHeight()<br />
{<br />
var clientHeight=0;<br />
if(document.body.clientHeight&amp;&amp;document.documentElement.clientHeight)<br />
{<br />
var clientHeight = (document.body.clientHeight&lt;document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;<br />
}<br />
else<br />
{<br />
var clientHeight = (document.body.clientHeight&gt;document.documentElement.clientHeight)?document.body.clientHeight:document.documentElement.clientHeight;<br />
}<br />
return clientHeight;<br />
}</p>
<p>/********************<br />
* 取文档内容实际高度<br />
*******************/<br />
function getScrollHeight()<br />
{<br />
return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight);<br />
}</p>
<p>////////////////////////////////////////////////////</p>
<p>在IE中：<br />
document.body.clientWidth ==&gt; BODY对象宽度<br />
document.body.clientHeight ==&gt; BODY对象高度<br />
document.documentElement.clientWidth ==&gt; 可见区域宽度<br />
document.documentElement.clientHeight ==&gt; 可见区域高度<br />
在FireFox中：<br />
document.body.clientWidth ==&gt; BODY对象宽度<br />
document.body.clientHeight ==&gt; BODY对象高度<br />
document.documentElement.clientWidth ==&gt; 可见区域宽度<br />
document.documentElement.clientHeight ==&gt; 可见区域高度<br />
?<br />
在 Opera中：<br />
document.body.clientWidth ==&gt; 可见区域宽度<br />
document.body.clientHeight ==&gt; 可见区域高度<br />
document.documentElement.clientWidth ==&gt; 页面对象宽度（即BODY对象宽度加上Margin宽）<br />
document.documentElement.clientHeight ==&gt; 页面对象高度（即BODY对象高度加上Margin高）<br />
而如果没有定义W3C的标准，则<br />
IE为：<br />
document.documentElement.clientWidth ==&gt; 0<br />
document.documentElement.clientHeight ==&gt; 0<br />
FireFox为：<br />
document.documentElement.clientWidth ==&gt; 页面对象宽度（即BODY对象宽度加上Margin宽）document.documentElement.clientHeight ==&gt; 页面对象高度（即BODY对象高度加上Margin高）<br />
Opera为：<br />
document.documentElement.clientWidth ==&gt; 页面对象宽度（即BODY对象宽度加上Margin宽）document.documentElement.clientHeight ==&gt; 页面对象高度（即BODY对象高度加上Margin高）<br />
真是一件麻烦事情，其实就开发来看，宁可少一些对象和方法，不使用最新的标 准要方便许多啊。</p>
<p>//////////////////////////////////////////////////////////////////////////////////////</p>
<p>网页可见区域宽:<br />
document.body.clientWidth</p>
<p>网页可见区域高:<br />
document.body.clientHeight</p>
<p>网页可见区域宽:<br />
document.body.offsetWidth(包 括边线的宽)</p>
<p>网页可见区域高:<br />
document.body.offsetHeight(包括边线的宽)</p>
<p>网页 正文全文宽:<br />
document.body.scrollWidth</p>
<p>网页正文全文高:<br />
document.body.scrollHeight</p>
<p>网 页被卷去的高:<br />
document.body.scrollTop</p>
<p>网页被卷去的左:<br />
document.body.scrollLeft</p>
<p>网 页正文部分上:<br />
window.screenTop</p>
<p>网页正文部分左:<br />
window.screenLeft</p>
<p>屏 幕分辨率的高:<br />
window.screen.height</p>
<p>屏幕分辨率的宽:<br />
window.screen.width</p>
<p>屏 幕可用工作区高度:<br />
window.screen.availHeight</p>
<p>屏幕可用工作区宽度:<br />
window.screen.availWidth</p>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/957/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript 图片loading的实现</title>
		<link>http://anfirst.cn/archives/818</link>
		<comments>http://anfirst.cn/archives/818#comments</comments>
		<pubDate>Tue, 08 Sep 2009 10:03:57 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[zencart项目]]></category>
		<category><![CDATA[全部文章]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[loading]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://anfirst.cn/?p=818</guid>
		<description><![CDATA[我们在设计一些图片比较多的网页时，为了增强用户体验，希望图片加载的时候有个loading动画效果，而不是由空白到一下子出来。在zen cart的二次开发过程中同样也遇到了这个问题，下面是我的解决方案。 首页给图片设置一个默认的loading动画，再分配一个id，如&#60;img  id=”loading1&#8243;  src=”loading.gif”&#62;实际上加载过程通过一个函数来完成 function addListener(element, type, expression, bubbling) { bubbling = bubbling &#124;&#124; false; if(window.addEventListener)    { // Standard element.addEventListener(type, expression, bubbling); return true; } else if(window.attachEvent) { // IE element.attachEvent('on' + type, expression); return true; } else return false; } var ImageLoader = function(url){ this.url = url; this.image = null; this.loadEvent = null; [...]]]></description>
			<content:encoded><![CDATA[<p>我们在设计一些图片比较多的网页时，为了增强用户体验，希望图片加载的时候有个loading动画效果，而不是由空白到一下子出来。在zen cart的二次开发过程中同样也遇到了这个问题，下面是我的解决方案。</p>
<p>首页给图片设置一个默认的loading动画，再分配一个id，如&lt;img  id=”loading1&#8243;  src=”loading.gif”&gt;实际上加载过程通过一个函数来完成</p>
<pre lang="JAVASCRIPT" line="1">function addListener(element, type, expression, bubbling)
{
bubbling = bubbling || false;
if(window.addEventListener)    { // Standard
element.addEventListener(type, expression, bubbling);
return true;
} else if(window.attachEvent) { // IE
element.attachEvent('on' + type, expression);
return true;
} else return false;
}

var ImageLoader = function(url){
this.url = url;
this.image = null;
this.loadEvent = null;
};

ImageLoader.prototype = {
load:function(){
this.image = document.createElement('img');
var url = this.url;
var image = this.image;
var loadEvent = this.loadEvent;
addListener(this.image, 'load', function(e){
if(loadEvent != null){
loadEvent(url, image);
}
}, false);
this.image.src = this.url;
},
getImage:function(){
return this.image;
}
};

function loadImage(objId,urls){
var loader = new ImageLoader(urls);
loader.loadEvent = function(url){
obj = document.getElementById(objId);
obj.src = url;
}
loader.load();
}</pre>
<p>通过loadImage函数就可以为指定的图片添加加载过程，其中通过addListener 函数注册事件，使得在图片加载完成的时候能够自动替换掉loading.gif这个动画过渡图片。使用代码很简单</p>
<blockquote><p>&lt;img  id=”loading1&#8243;  src=”loading.gif”  /&gt;</p>
<p>&lt;script language=”javascript”&gt;</p>
<p>loadImage(“loading1&#8243;,”http://www.baidu.com/img/baidu_logo.gif”);</p>
<p>&lt;/script&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/818/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>一个好用的javascript日历-spiffyCal</title>
		<link>http://anfirst.cn/archives/747</link>
		<comments>http://anfirst.cn/archives/747#comments</comments>
		<pubDate>Thu, 16 Jul 2009 08:51:56 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[全部文章]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[zen cart]]></category>

		<guid isPermaLink="false">http://anfirst.cn/?p=747</guid>
		<description><![CDATA[在做zencart二次开发的时候发现的一个javascript，特收藏一下 使用代码很简单 &#60;html&#62; &#60;head&#62; &#60;meta http-equiv=”content-type” content=”text/html; charset=utf-8&#8243;&#62; &#60;title&#62;Calendar&#60;/title&#62; &#60;link rel=”stylesheet” type=”text/css” href=”spiffyCal/spiffyCal_v2_1.css”&#62; &#60;script type=”text/javascript” src=”spiffyCal/spiffyCal_v2_1.js”&#62;&#60;/script&#62; &#60;script type=”text/javascript”&#62; var dateAvailable = new ctlSpiffyCalendarBox(“dateAvailable”, “new_product”, “products_date_available”,”btnDate1&#8243;,”"); &#60;/script&#62; &#60;/head&#62; &#60;body&#62; &#60;div id=”spiffycalendar” class=”text”&#62;&#60;/div&#62; &#60;form name=”new_product”&#62; &#60;table width=”100%” border=”0&#8243; cellspacing=”0&#8243; cellpadding=”4&#8243;&#62; &#60;tr class=”dataTableRow”&#62; &#60;td align=”right”&#62;上架日期：&#60;br /&#62;&#60;small&#62;(YYYY-MM-DD)&#60;/small&#62;&#60;/td&#62; &#60;td align=”left”&#62;&#38;nbsp;&#60;script type=”text/javascript”&#62;dateAvailable.writeControl(); dateAvailable.dateFormat=”yyyy-MM-dd”;&#60;/script&#62; &#60;/td&#62; &#60;/tr&#62; &#60;/table&#62; &#60;/form&#62; &#60;/body&#62; &#60;/html&#62; spiffyCal.zip下载]]></description>
			<content:encoded><![CDATA[<p>在做zencart二次开发的时候发现的一个javascript，特收藏一下<br />
使用代码很简单</p>
<blockquote><p>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=”content-type” content=”text/html; charset=utf-8&#8243;&gt;<br />
&lt;title&gt;Calendar&lt;/title&gt;<br />
&lt;link rel=”stylesheet” type=”text/css” href=”spiffyCal/spiffyCal_v2_1.css”&gt;<br />
&lt;script type=”text/javascript” src=”spiffyCal/spiffyCal_v2_1.js”&gt;&lt;/script&gt;<br />
&lt;script type=”text/javascript”&gt;<br />
var dateAvailable = new ctlSpiffyCalendarBox(“dateAvailable”, “new_product”, “products_date_available”,”btnDate1&#8243;,”");<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;div id=”spiffycalendar” class=”text”&gt;&lt;/div&gt;<br />
&lt;form name=”new_product”&gt;<br />
&lt;table width=”100%” border=”0&#8243; cellspacing=”0&#8243; cellpadding=”4&#8243;&gt;<br />
&lt;tr class=”dataTableRow”&gt;<br />
&lt;td align=”right”&gt;上架日期：&lt;br /&gt;&lt;small&gt;(YYYY-MM-DD)&lt;/small&gt;&lt;/td&gt;<br />
&lt;td align=”left”&gt;&amp;nbsp;&lt;script type=”text/javascript”&gt;dateAvailable.writeControl(); dateAvailable.dateFormat=”yyyy-MM-dd”;&lt;/script&gt; &lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p></blockquote>
<p><a href="http://anfirst.cn/wp-content/uploads/2009/07/spiffycal.zip" target="_blank">spiffyCal.zip下载</a></p>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/747/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript:文件类型检验小案例</title>
		<link>http://anfirst.cn/archives/730</link>
		<comments>http://anfirst.cn/archives/730#comments</comments>
		<pubDate>Sun, 31 May 2009 08:05:19 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[全部文章]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[案例]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://anfirst.cn/?p=730</guid>
		<description><![CDATA[例如允许上传的文件类型有 gif,jpg,jpeg,bmp,png; 通过一个输入框可以输入文件类型，但必须都是合法的 例如可以输入gif&#124;bmp,jpg&#124;png&#124;gif等等 通过js在客户端检测的代码如下 &#60;script language=”javascript”&#62; function test(str) { type=”gif&#124;jpg&#124;jpeg&#124;bmp&#124;png”;//合法类型 //str=”gif&#124;jpg&#124;bmp” ar_type=type.split(“&#124;”); ar_str=str.split(“&#124;”); for(istr in ar_str) { flag = false; for(itype in ar_type) { if(ar_str[istr]==ar_type[itype]) { flag=true; continue; } } if (flag==false)break; }; if(!flag) alert(“文件类型不合法!”); return false; } &#60;/script&#62; &#60;form name=”form1&#8243;&#62; &#60;INPUT TYPE=”text” NAME=”strt”&#62;&#60;INPUT TYPE=”submit” onclick=test(form1.strt.value)&#62; &#60;/form&#62;]]></description>
			<content:encoded><![CDATA[<p>例如允许上传的文件类型有 gif,jpg,jpeg,bmp,png;<br />
通过一个输入框可以输入文件类型，但必须都是合法的<br />
例如可以输入gif|bmp,jpg|png|gif等等<br />
通过js在客户端检测的代码如下</p>
<blockquote><p>&lt;script language=”javascript”&gt;<br />
function test(str)<br />
{<br />
type=”gif|jpg|jpeg|bmp|png”;//合法类型<br />
//str=”gif|jpg|bmp”<br />
ar_type=type.split(“|”);<br />
ar_str=str.split(“|”);</p>
<p>for(istr in ar_str)<br />
{<br />
flag = false;<br />
for(itype in ar_type)<br />
{<br />
if(ar_str[istr]==ar_type[itype])<br />
{<br />
flag=true;<br />
continue;<br />
}<br />
}<br />
if (flag==false)break;</p>
<p>};</p>
<p>if(!flag) alert(“文件类型不合法!”);<br />
return false;<br />
}<br />
&lt;/script&gt;<br />
&lt;form name=”form1&#8243;&gt;<br />
&lt;INPUT TYPE=”text” NAME=”strt”&gt;&lt;INPUT TYPE=”submit” onclick=test(form1.strt.value)&gt;<br />
&lt;/form&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/730/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>有关javascript 的onmouseout事件</title>
		<link>http://anfirst.cn/archives/719</link>
		<comments>http://anfirst.cn/archives/719#comments</comments>
		<pubDate>Fri, 22 May 2009 06:54:41 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[全部文章]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.anfirst.cn/?p=719</guid>
		<description><![CDATA[相信很多人都碰到过，以前我也碰到过，那是为了做一个弹出菜单，最后还是用css搞定的。就那天又碰到同样的问题，找了半天资料，终于知道了究竟。 文档中onmouseout事件的定义是 onmouseout 事件会在鼠标指针移出指定的对象时发生。 支持改时间的html标签也很多有 &#60;a&#62;, &#60;address&#62;, &#60;area&#62;, &#60;b&#62;, &#60;bdo&#62;, &#60;big&#62;, &#60;blockquote&#62;, &#60;body&#62;, &#60;button&#62;, &#60;caption&#62;, &#60;cite&#62;, &#60;code&#62;, &#60;dd&#62;, &#60;dfn&#62;, &#60;div&#62;, &#60;dl&#62;, &#60;dt&#62;, &#60;em&#62;, &#60;fieldset&#62;, &#60;form&#62;, &#60;h1&#62; to &#60;h6&#62;, &#60;hr&#62;, &#60;i&#62;, &#60;img&#62;, &#60;input&#62;, &#60;kbd&#62;, &#60;label&#62;, &#60;legend&#62;, &#60;li&#62;, &#60;map&#62;, &#60;ol&#62;, &#60;p&#62;, &#60;pre&#62;, &#60;samp&#62;, &#60;select&#62;, &#60;small&#62;, &#60;span&#62;, &#60;strong&#62;, &#60;sub&#62;, &#60;sup&#62;, &#60;table&#62;, &#60;tbody&#62;, &#60;td&#62;, &#60;textarea&#62;, &#60;tfoot&#62;, &#60;th&#62;, &#60;thead&#62;, &#60;tr&#62;, [...]]]></description>
			<content:encoded><![CDATA[<p>相信很多人都碰到过，以前我也碰到过，那是为了做一个弹出菜单，最后还是用css搞定的。就那天又碰到同样的问题，找了半天资料，终于知道了究竟。<br />
文档中onmouseout事件的定义是</p>
<ol>
<li>onmouseout 事件会在鼠标指针移出指定的对象时发生。</li>
</ol>
<p>支持改时间的html标签也很多有</p>
<blockquote><p>&lt;a&gt;, &lt;address&gt;, &lt;area&gt;, &lt;b&gt;, &lt;bdo&gt;, &lt;big&gt;, &lt;blockquote&gt;, &lt;body&gt;, &lt;button&gt;, &lt;caption&gt;, &lt;cite&gt;, &lt;code&gt;, &lt;dd&gt;, &lt;dfn&gt;, &lt;div&gt;, &lt;dl&gt;, &lt;dt&gt;, &lt;em&gt;, &lt;fieldset&gt;,<br />
&lt;form&gt;, &lt;h1&gt; to &lt;h6&gt;, &lt;hr&gt;, &lt;i&gt;, &lt;img&gt;, &lt;input&gt;, &lt;kbd&gt;, &lt;label&gt;, &lt;legend&gt;, &lt;li&gt;, &lt;map&gt;, &lt;ol&gt;, &lt;p&gt;, &lt;pre&gt;, &lt;samp&gt;, &lt;select&gt;, &lt;small&gt;, &lt;span&gt;, &lt;strong&gt;,<br />
&lt;sub&gt;, &lt;sup&gt;, &lt;table&gt;, &lt;tbody&gt;, &lt;td&gt;, &lt;textarea&gt;, &lt;tfoot&gt;, &lt;th&gt;, &lt;thead&gt;, &lt;tr&gt;, &lt;tt&gt;, &lt;ul&gt;, &lt;var&gt;</p></blockquote>
<p>可是什么叫onmouseout到底在什么情况下被出发呢？举个简单的例子：</p>
<blockquote><p>&lt;div onmouseout=”javascript:this.style.display=&#8217;none&#8217;” style=”width:500px;height:300px;background-color:#ccc;”&gt;&lt;a href=”#”&gt;test&lt;/a&gt;&lt;/div&gt;</p></blockquote>
<p>可以做个小实验，可以发现，鼠标移出div时却是触发了onmouseout事件，div被隐藏了，可是在div内部，当鼠标移动到test的链接上时，div却也被隐藏了，相信原因很明了，即使在div内部，当鼠标进入其内部的对象时，也会触发div的onmouseout事件，再做个试验，把test的链接去掉，也就是div内部只剩下纯文本，这是鼠标移到文字上，没有反应。。。</p>
<p>解决办法：很简单，给div再加个事件onmouseover，因为鼠标在进入子对象同时也会触发div的onmouseover事件，上面的例子改为这样就可以解决问题：</p>
<blockquote><p>&lt;div onmouseout=”javascript:this.style.display=&#8217;none&#8217;” onmouseover=”javascript:this.style.display=&#8217;block&#8217;” style=”width:500px;height:300px;background-color:#ccc;”&gt;&lt;a href=”#”&gt;test&lt;/a&gt;&lt;/div&gt;</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/719/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript给html对象绑定一个带参数的方法</title>
		<link>http://anfirst.cn/archives/129</link>
		<comments>http://anfirst.cn/archives/129#comments</comments>
		<pubDate>Fri, 21 Nov 2008 21:50:00 +0000</pubDate>
		<dc:creator>shooting</dc:creator>
				<category><![CDATA[全部文章]]></category>
		<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.anfirst.cn/blog/?p=129</guid>
		<description><![CDATA[javascript中经常会碰到动态为html对象注册事件的问题，比如一个简单的例子： function clickevent() { alert(“my message!”); } object.onclick=clickevent(msg)其实注册事件时赋值符号(=)后应该是函数的引用，也就是函数名，所以只能用object.onclick=clickevent 可是如果要想这个事件驱动的函数带上参数怎么办呢，这时候可以再创建一个无参数的新函数，新函数中执行带参数的函数就行了，很简单如下 object.onclick=function(){clickevent(msg);} 就可以了。 也可以定义一个函数 function cleckevent2() { return function(){alert(msg);} } object.onclick=clickevent2 其实原理还是一样的。]]></description>
			<content:encoded><![CDATA[<p>javascript中经常会碰到动态为html对象注册事件的问题，比如一个简单的例子：</p>
<blockquote><p>
function clickevent()</p>
<p>{</p>
<p>alert(“my message!”);</p>
<p>}
</p></blockquote>
<p>object.onclick=clickevent(msg)其实注册事件时赋值符号(=)后应该是函数的引用，也就是函数名，所以只能用object.onclick=clickevent 可是如果要想这个事件驱动的函数带上参数怎么办呢，这时候可以再创建一个无参数的新函数，新函数中执行带参数的函数就行了，很简单如下</p>
<p>object.onclick=function(){clickevent(msg);} 就可以了。</p>
<p>也可以定义一个函数</p>
<blockquote><p>function cleckevent2()<br />
{<br />
return function(){alert(msg);}</p>
<p>}<br />
object.onclick=clickevent2 </p></blockquote>
<p>其实原理还是一样的。</p>
]]></content:encoded>
			<wfw:commentRss>http://anfirst.cn/archives/129/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

