<?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>肖建彬的博客 &#187; javascript</title>
	<atom:link href="http://www.xiaojb.com/archives/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xiaojb.com</link>
	<description>奋斗无止境 爱拼才会赢</description>
	<lastBuildDate>Sun, 16 Oct 2011 14:27:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>偷某站加密的Javascript进行解密</title>
		<link>http://www.xiaojb.com/archives/it/javascript-decode.shtml</link>
		<comments>http://www.xiaojb.com/archives/it/javascript-decode.shtml#comments</comments>
		<pubDate>Thu, 03 Apr 2008 11:27:29 +0000</pubDate>
		<dc:creator>xjb</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[解密]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[加密]]></category>

		<guid isPermaLink="false">http://www.xiaojb.com/?p=620</guid>
		<description><![CDATA[某站的javascript代码做了简单的编码，由于想偷这个功能，又懒得自己写。网上找了一下解决方法 从IE浏览器中输入这段代码 javascript:x=document.documentElement.outerHTML;document.write(&#8216;&#60;body&#62;&#60;/body&#62;&#8217;);document.body.innerText=x; 我试过，还是可以看到的。 变eval为document.write 或者 document.getElementById(&#8216;x&#8217;).innerText = 某些方法是将javascript代码编码后，在调用时解码，然后用eval执行，所以把eval改成document.write就能打印解开后的代码。 我在测试网页中创建了一个id为x的div。轻松在IE中看到了javascript代码。 我之前尝试了innerHTML，结果javascript中的html都被解释了，之后尝试innerText, 成功！ innerText在IE下才有效。 无论是什么javascript加密方法，如果用了eval，应该都可以用这种方法解密。 其他的方法网上太多，就不介绍了。]]></description>
			<content:encoded><![CDATA[<p>    某站的<a href="http://www.xiaojb.com/archives/tag/javascript">javascript</a>代码做了简单的编码，由于想偷这个功能，又懒得自己写。网上找了一下解决方法</p>
<ol>
<li>从IE浏览器中输入这段代码</li>
<p>javascript:x=document.documentElement.outerHTML;document.write(&#8216;&lt;body&gt;&lt;/body&gt;&#8217;);document.body.innerText=x;</p>
<p>我试过，还是可以看到的。</p>
<li><strong>变eval为document.write 或者 document.getElementById(&#8216;x&#8217;).innerText =</strong></li>
<p>某些方法是将<a href="http://www.xiaojb.com/archives/tag/javascript">javascript</a>代码编码后，在调用时解码，然后用eval执行，所以把eval改成document.write就能打印解开后的代码。<br />
我在测试网页中创建了一个id为x的div。轻松在IE中看到了<a href="http://www.xiaojb.com/archives/tag/javascript">javascript</a>代码。<br />
我之前尝试了innerHTML，结果javascript中的html都被解释了，之后尝试innerText, 成功！<br />
innerText在IE下才有效。</p>
<p>无论是什么<a href="http://www.xiaojb.com/archives/tag/javascript">javascript</a>加密方法，如果用了eval，应该都可以用这种方法解密。
</ol>
<p>其他的方法网上太多，就不介绍了。 </p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaojb.com/archives/it/javascript-decode.shtml/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>javascript痩身工具jsmin和YUI Compressor</title>
		<link>http://www.xiaojb.com/archives/it/javascript-minifie.shtml</link>
		<comments>http://www.xiaojb.com/archives/it/javascript-minifie.shtml#comments</comments>
		<pubDate>Sat, 22 Mar 2008 01:57:03 +0000</pubDate>
		<dc:creator>xjb</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.xiaojb.com/?p=615</guid>
		<description><![CDATA[JSmin Javascript痩身工具，使用前最好用JSLit整理js代码。 JSmin有很多语言版本，C和PHP版等。 YUI Compressor: Yahoo! UI Library系列工具之一，java语言编写，下载后可直接使用。]]></description>
			<content:encoded><![CDATA[<p><a href="http://javascript.crockford.com/jsmin.html">JSmin</a> Javascript痩身工具，使用前最好用<a href="http://www.jslint.com/">JSLit</a>整理js代码。<br />
JSmin有很多语言版本，<a href="http://www.crockford.com/javascript/jsmin.c">C</a>和<a href="http://code.google.com/p/jsmin-php/">PHP</a>版等。</p>
<p><a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>: Yahoo! UI Library系列工具之一，java语言编写，下载后可直接使用。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaojb.com/archives/it/javascript-minifie.shtml/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Firefox下拷贝/复制文本到剪切板</title>
		<link>http://www.xiaojb.com/archives/tips/firefox-copy-text-cutboard.shtml</link>
		<comments>http://www.xiaojb.com/archives/tips/firefox-copy-text-cutboard.shtml#comments</comments>
		<pubDate>Thu, 13 Dec 2007 13:55:25 +0000</pubDate>
		<dc:creator>xjb</dc:creator>
				<category><![CDATA[TIPS]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.xiaojb.com/archives/tips/firefox-copy-text-cutboard.shtml</guid>
		<description><![CDATA[Firefox下拷贝/复制文本到剪切板的javascript代码： function copy(text2copy) { if (window.clipboardData) { window.clipboardData.setData(&#8220;Text&#8221;,text2copy); } else { var flashcopier = &#8216;flashcopier&#8217;; if(!$(flashcopier)) { var divholder = document.createElement(&#8216;div&#8217;); divholder.id = flashcopier; document.body.appendChild(divholder); } $(flashcopier).innerHTML = &#8221;; var divinfo = &#8216;&#8216;; $(flashcopier).innerHTML = divinfo; } } 众所周知Firefox下是没有clipboardData这个对象的，windows.clipboardData属于IE的标准，所以Firefox下是不能做到复制文本的，这个方法把javascript不能完成的工作交给flash，是一个不错的处理方法。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.xiaojb.com/archives/tag/firefox">Firefox</a>下拷贝/复制文本到剪切板的<a href="http://www.xiaojb.com/archives/tag/javascript">javascript</a>代码：<br />
<coolcode lang="javascript"><br />
function copy(text2copy) {<br />
	if (window.clipboardData) {<br />
		window.clipboardData.setData(&#8220;Text&#8221;,text2copy);<br />
	} else {<br />
		var flashcopier = &#8216;flashcopier&#8217;;<br />
		if(!$(flashcopier)) {<br />
		var divholder = document.createElement(&#8216;div&#8217;);<br />
		<a target="_blank" href="http://divholder.id"><span class="yshortcuts" id="lw_1197738616_0">divholder.id</span></a> = flashcopier;<br />
		document.body.appendChild(divholder);<br />
		}</p>
<p>		$(flashcopier).innerHTML = &#8221;;<br />
		var divinfo = &#8216;<embed src="./clipboard.swf" FlashVars="clipboard='+escape(text2copy)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>&#8216;;<br />
		$(flashcopier).innerHTML = divinfo;</p>
<p>	}<br />
}<br />
</coolcode></p>
<p>众所周知<strong><a href="http://www.xiaojb.com/archives/tag/firefox">Firefox</a></strong>下是没有clipboardData这个对象的，windows.clipboardData属于IE的标准，所以<a href="http://www.xiaojb.com/archives/tag/firefox">Firefox</a>下是不能做到复制文本的，这个方法把<a href="http://www.xiaojb.com/archives/tag/javascript">javascript</a>不能完成的工作交给flash，是一个不错的处理方法。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaojb.com/archives/tips/firefox-copy-text-cutboard.shtml/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>学习一下搜狐通行证(qyb大作)</title>
		<link>http://www.xiaojb.com/archives/it/sohu-passport-code.shtml</link>
		<comments>http://www.xiaojb.com/archives/it/sohu-passport-code.shtml#comments</comments>
		<pubDate>Fri, 02 Nov 2007 12:43:42 +0000</pubDate>
		<dc:creator>xjb</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[通行证]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[qyb]]></category>
		<category><![CDATA[搜狐]]></category>

		<guid isPermaLink="false">http://www.xiaojb.com/archives/it/sohu-passport-code.shtml</guid>
		<description><![CDATA[搜狐通行证是伟大的qyb同学加入搜狐后的第一个大作，是成名之作，前几天吃饭还谈起此事，最近几天终于有时间研究一下，今天说一下我从外部学习到的搜狐通行证的东西。 从任意的sohu新闻页面的源代码中可以看到这么一段js pp18030_5.js是PassportSC这个对象的基本定义，有很多的参数和方法。 pn18030_5.js是每个产品线定制的passport登录框、等待认证框、出错提示框的代码。 之后的代码则是给PassportSC的属性赋值。 appid是分给每个业务线的编号。 isSetFocus是否给登录框焦点，我曾经向qyb同学提出看新闻时登录框有了焦点，导致我无法用空格翻页。 drawPassport方法就是修改newscard这个div内的代码。 页面调用PassportSC.drawPassport()方法后，该对象从cookie（ppinfo或者passport）中获取登录信息，如果有登录cookie，跳到第8步 draw登录框，表单的onSubmit事件是PassportSC.doLogin 点登录后，PassportSC将用户email和密码等通过创建的script标签调用passport服务器的登录认证程序 原本传递的密码是明文的，被我发现了，现在改成了md5过的。 PassportSC将登录框改为登录等待框 登录认证程序为login_status赋值，登录成功返回值是success，错误会返回errorN PassportSC分析login_status，打印错误页或者成功的面板 登录成功后还会调用crossdomain_all.jsp,为所有的域名种下cookie 方法parsePassportCookie将passport的值解析，获取登录者的信息，获得userid后打印登录成功信息 各个业务线根据自己的需要调用方法drawPPContInfo修改通行证面板中的部分信息 退出登录部分跟登录流程基本相似 passport种下的cookie的格式是 1&#124;登录时的时间戳&#124;0&#124;登录者的信息&#124;未知的md5&#124;未知信息; 将登录者的信息做base64解码和utf8到utf16的转换后，得到内容的格式是 userid:20:11111111111@sohu.com&#124;username:3:肖建彬&#124;serviceuse:30:100111000100000000000000000000 &#124;newmail_num:1:0&#124;ip:15:1.2.3.4&#124;did:0: utf8转码为utf16后，可以在任意字符集的页面显示，提高了兼容性。使用&#60;script charset=&#8221;utf-8&#8243;&#62; &#60;/script&#62;的方法可以保证字符集正确，但是无法保证cookie中解析出来的中文也是正确的。 登录信息中包含了很多故事，userid就是passport的名字，username是真实姓名，serviceuse是该用户都使用了哪些服务，newmail_num是新邮件数目，ip是登录的ip地址，did不知道。 搜狐的新闻页面使用passport面板只从cookie中获取信息，不浪费服务器资源。 受益匪浅。 另：firebug真是个好东西，可以将js的对象看的一览无余。]]></description>
			<content:encoded><![CDATA[<p>  <strong>搜狐通行证</strong>是伟大的<a href="http://www.dup2.org/">qyb同学</a><a href="http://www.dup2.org/node/790">加入搜狐后的第一个大作</a>，是成名之作，前几天吃饭还谈起此事，最近几天终于有时间研究一下，今天说一下我从外部学习到的搜狐通行证的东西。</p>
<p>  从任意的sohu新闻页面的源代码中可以看到这么一段js<br />
<coolcode lang="javascript" linenum="off"></p>
<div id="newscard" style="margin-left:615px!important;margin-left:613px"></div>
<p><script src="http://www.sohu.com/passport/pp18030_5.js"></script><br />
<script src="http://www.sohu.com/passport/pn18030_5.js"></script><br />
<script>
PassportSC.appid = 9997;
PassportSC.max_line_length = 40; 
PassportSC.isSetFocus = false;
PassportSC.drawPassport(document.getElementById("newscard")); 
</script><br />
</coolcode></p>
<p>pp18030_5.js是PassportSC这个对象的基本定义，有很多的参数和方法。</p>
<p>pn18030_5.js是每个产品线定制的passport登录框、等待认证框、出错提示框的代码。</p>
<p>之后的代码则是给PassportSC的属性赋值。<br />
appid是分给每个业务线的编号。<br />
isSetFocus是否给登录框焦点，我曾经向qyb同学提出看新闻时登录框有了焦点，导致我无法用空格翻页。<br />
drawPassport方法就是修改newscard这个div内的代码。</p>
<ol>
<li>页面调用PassportSC.drawPassport()方法后，该对象从cookie（ppinfo或者passport）中获取登录信息，如果有登录cookie，跳到第8步</li>
<li>draw登录框，表单的onSubmit事件是PassportSC.doLogin</li>
<li>点登录后，PassportSC将用户email和密码等通过创建的script标签调用passport服务器的登录认证程序</li>
<p>原本传递的密码是明文的，被我发现了，现在改成了md5过的。</p>
<li>PassportSC将登录框改为登录等待框</li>
<li>登录认证程序为login_status赋值，登录成功返回值是success，错误会返回errorN</li>
<li>PassportSC分析login_status，打印错误页或者成功的面板</li>
<li>登录成功后还会调用crossdomain_all.jsp,为所有的域名种下cookie</li>
<li>方法parsePassportCookie将passport的值解析，获取登录者的信息，获得userid后打印登录成功信息</li>
<li>各个业务线根据自己的需要调用方法drawPPContInfo修改通行证面板中的部分信息</li>
<li>退出登录部分跟登录流程基本相似</li>
</ol>
<p>passport种下的cookie的格式是</p>
<p>1|登录时的时间戳|0|登录者的信息|未知的md5|未知信息;</p>
<p>将登录者的信息做base64解码和utf8到utf16的转换后，得到内容的格式是<br />
<coolcode linenum="off"><br />
userid:20:11111111111@sohu.com|username:3:肖建彬|serviceuse:30:100111000100000000000000000000<br />
|newmail_num:1:0|ip:15:1.2.3.4|did:0:<br />
</coolcode><br />
utf8转码为utf16后，可以在任意字符集的页面显示，提高了兼容性。使用<a href="http://www.xiaojb.com/archives/tips/javascript-charset.shtml">&lt;script charset=&#8221;utf-8&#8243;&gt; &lt;/script&gt;的方法</a>可以保证字符集正确，但是无法保证cookie中解析出来的中文也是正确的。</p>
<p>登录信息中包含了很多故事，userid就是passport的名字，username是真实姓名，serviceuse是该用户都使用了哪些服务，newmail_num是新邮件数目，ip是登录的ip地址，did不知道。</p>
<p>搜狐的新闻页面使用passport面板只从cookie中获取信息，不浪费服务器资源。</p>
<p>受益匪浅。</p>
<p>另：<a href="https://addons.mozilla.org/en-US/firefox/addon/1843">firebug</a>真是个好东西，可以将js的对象看的一览无余。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaojb.com/archives/it/sohu-passport-code.shtml/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google AJAXSLT</title>
		<link>http://www.xiaojb.com/archives/it/google_ajaxslt.shtml</link>
		<comments>http://www.xiaojb.com/archives/it/google_ajaxslt.shtml#comments</comments>
		<pubDate>Tue, 01 Nov 2005 15:50:34 +0000</pubDate>
		<dc:creator>xjb</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.xiaojb.com/wp/?p=179</guid>
		<description><![CDATA[http://goog-ajaxslt.sourceforge.net/ AJAXSLT is an implementation of XSL-T in JavaScript, intended for use in fat web pages, which are nowadays referred to as AJAX applications. Because XSL-T uses XPath, it is also an implementation of XPath that can be used independently of XSL-T. XSL-T stands for XSL Transformations. XSL stands for eXtensible Stylesheet Language XSL-T is [...]]]></description>
			<content:encoded><![CDATA[<p>http://goog-ajaxslt.sourceforge.net/</p>
<p>AJAXSLT is an implementation of XSL-T in JavaScript, intended for use in fat web pages, which are nowadays referred to as AJAX applications. Because XSL-T uses XPath, it is also an implementation of XPath that can be used independently of XSL-T.</p>
<p>XSL-T stands for XSL Transformations. XSL stands for eXtensible Stylesheet Language</p>
<p>XSL-T is a language for transforming XML documents from one language to another. An XSL-T style sheet would be used, for instance, to convert the unformatted content from an XML document into the a fully-formatted HTML document.</p>
<p>AJAXSLT takes this process one step forward, by implementing XSL-T in Javascript and having it run in your browser. Thus, your web browser can fetch XML documents directly from the server, and perform the format conversion locally; thus saving time and bandwidth.</p>
<p>AJAXSLT is distributed under the terms of the BSD License.</p>
<p><a href="http://sourceforge.net/project/showfiles.php?group_id=140999">Download</a></p>
<p><a href="http://zh.wikipedia.org/wiki/AJAX">关于AJAX</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xiaojb.com/archives/it/google_ajaxslt.shtml/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

