<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_kennyzx</title><subtitle type="text">暮春之初会于会稽山阴之兰亭修禊事也</subtitle><id>http://feed.cnblogs.com/blog/u/47691/rss</id><updated>2011-11-09T04:39:27Z</updated><author><name>kennyzx</name><uri>http://www.cnblogs.com/kennyzx/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kennyzx/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/47691/rss"/><entry><id>http://www.cnblogs.com/kennyzx/archive/2011/07/25/2115752.html</id><title type="text">当Google搜索结果的链接无法打开时</title><summary type="text">背景别人可以不用Google搜索，但是程序员必须得用。编程上无论是什么问题，Google总能以令人惊叹的准确率在前几条搜索结果中为你找到答案，这是其他的搜索引擎做不到的。但是由于众所周知的原因，哪怕是搜索&amp;quot;HRESULT&amp;quot;这种完全不敏感的关键字-你的浏览器也有可能会显示“链接被重置”，或者在搜索结果出来之后，点击某个结果却显示“链接被重置”。这时候别人可以选择等待，但是对程序员来说，时间太宝贵了。这篇文章介绍在搜索结果已经出来，但链接却点击不开的情况下（也就是上段中标蓝的那一种现象），如何快速地打开链接。我希望有一天我们的后辈程序员将以为&amp;quot;链接被重置&amp;quot;只</summary><published>2011-07-25T15:28:00Z</published><updated>2011-07-25T15:28:00Z</updated><author><name>kennyzx</name><uri>http://www.cnblogs.com/kennyzx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kennyzx/archive/2011/07/25/2115752.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kennyzx/archive/2011/07/25/2115752.html"/><content type="html">&lt;p&gt;&lt;strong&gt;背景&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;别人可以不用Google搜索，但是程序员必须得用。编程上无论是什么问题，Google总能以令人惊叹的准确率在前几条搜索结果中为你找到答案，这是其他的搜索引擎做不到的。但是由于众所周知的原因，哪怕是搜索"HRESULT"这种完全不敏感的关键字-你的浏览器也有可能会显示&amp;#8220;链接被重置&amp;#8221;，或者&lt;span style="color: #0000ff"&gt;&lt;strong&gt;在搜索结果出来之后，点击某个结果却显示&amp;#8220;链接被重置&amp;#8221;。&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这时候别人可以选择等待，但是对程序员来说，时间太宝贵了。这篇文章介绍在搜索结果已经出来，但链接却点击不开的情况下（也就是上段中标蓝的那一种现象），如何快速地打开链接。我希望有一天我们的后辈程序员将以为"链接被重置"只是个传说。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&amp;nbsp;分析被重置的链接的URL&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Google的搜索结果的链接地址中包含有"google"字样。比如，搜索"HResult"，搜索到的其中一条结果（&lt;font size="1"&gt;MSDN的&amp;nbsp;Exception.HResult Property&lt;/font&gt;）的链接地址为&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=4&amp;amp;sqi=2&amp;amp;ved=0CD8QFjAD&amp;amp;url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fsystem.exception.hresult(v%3Dvs.71).aspx&amp;amp;ei=llQsTs3lCa6CmQW92IC6Dw&amp;amp;usg=AFQjCNEGSQWIyUKTk6SAG3TgWVesfWCN_g"&gt;http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=4&amp;amp;sqi=2&amp;amp;ved=0CD8QFjAD&amp;amp;url=http%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2Fsystem.exception.hresult(v%3Dvs.71).aspx&amp;amp;ei=llQsTs3lCa6CmQW92IC6Dw&amp;amp;usg=AFQjCNEGSQWIyUKTk6SAG3TgWVesfWCN_g&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;由于这个地址中-我们暂且称其为(&lt;em&gt;Google url&lt;/em&gt;)有"google", 所以&amp;#8220;链接被重置&amp;#8221;。&lt;/p&gt;&#xD;
&lt;p&gt;从这个google url中是可以提取出原始页面的地址的，也即&lt;a href="http://msdn.microsoft.com/en-us/library/system.exception.hresult(v=vs.71).aspx"&gt;http://msdn.microsoft.com/en-us/library/system.exception.hresult(v=vs.71).aspx&lt;/a&gt;；如果在浏览器中直接输入这个原始页面的地址，那么链接是不会被重置的。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;原始页面的地址在Google url中以"&amp;amp;url="开始，到下一个"&amp;amp;"符号（"&amp;amp;"符号在url中用来分隔参数）结束。其中包含一些转义符号，如用"%2F"表示'/'，用"%3A"表示':'， 更多的转义规则请参见&lt;a title="Wikipedia:URL percent encoding" href="http://en.wikipedia.org/wiki/Percent-encoding#Percent-encoding_reserved_characters"&gt;Wikipedia:URL percent encoding&lt;/a&gt;。那么，要打开被重置的链接，只要取得链接的Google url, 取出"&amp;amp;url="和下一个"&amp;amp;"符号之间的字符串，并还原转义字符就可以得到原始的地址，将原始的地址用一个新窗口打开就可以了。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;快速地打开&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;为了符合用户的使用习惯，最好将打开被重置链接的操作做到鼠标右键菜单中。如下图所示， &lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kennyzx/GoogleURL.png" width="436" height="351" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;IE提供的一个功能是允许用户通过修改注册表的方式添加自定义的右键菜单项，同时指定点击该菜单项时运行的程序或脚本。&lt;/p&gt;&#xD;
&lt;p&gt;一下介绍添加这个右键菜单项的两个步骤。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;步骤&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1. 修改注册表，生成"GoogleURL"菜单项。（更详细的步骤请参加&lt;a title="Adding Entries to the Standard Context Menu" href="http://msdn.microsoft.com/en-us/library/aa753589(v=vs.85).aspx"&gt;Adding Entries to the Standard Context Menu&lt;/a&gt;）&lt;/p&gt;&#xD;
&lt;p&gt;a. 打开注册表项HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\&lt;/p&gt;&#xD;
&lt;p&gt;b. 新建一个子项GoogleURL (或者你喜欢的别的名称, 下图中的&amp;amp;GoogleURL设定G键为快捷键)&lt;/p&gt;&#xD;
&lt;p&gt;c. GoogleURL的(Default)值设为执行脚本的路径，我将其设为"H:\GoogleURL.htm"&lt;/p&gt;&#xD;
&lt;p&gt;d. 给GoogleURL添加一个类型为REG_DWORD的值，名称为Contexts，并将其值设为0x20 （十进制为32），这个值表示右键点击页面的控件时（如hyperlink）时GoogleURL这一项会在右键菜单中出现。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/kennyzx/MenuExt.png" width="602" height="258" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;2. 编辑执行脚本（即步骤1中的H:\GoogleURL.htm）&lt;/p&gt;&#xD;
&lt;p&gt;a. 打开notepad.exe&lt;/p&gt;&#xD;
&lt;p&gt;b. 输入如下javascript脚本&lt;/p&gt;&#xD;
&lt;p&gt;c. 将脚本保存至H:\GoogleURL.htm&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;script&amp;nbsp;language&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;JavaScript&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;parentwin&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;external.menuArguments;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;doc&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;parentwin.document;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;get&amp;nbsp;the&amp;nbsp;"Google&amp;nbsp;url" of the blocked hyperlink&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;String(doc.activeElement.href);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #000000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str.length)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;originalurl&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;get&amp;nbsp;the&amp;nbsp;original&amp;nbsp;URL,&amp;nbsp;which&amp;nbsp;is&amp;nbsp;between&amp;nbsp;"&amp;amp;url="&amp;nbsp;and&amp;nbsp;the&amp;nbsp;next&amp;nbsp;ocurrance&amp;nbsp;of&amp;nbsp;'&amp;amp;'&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nStart&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str.indexOf(&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;url=&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;var&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nEnd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str.indexOf(&lt;/span&gt;&lt;span style="color: #000000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;nStart&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;5&lt;/span&gt;&lt;span style="color: #000000"&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;(nStart&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;nEnd&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;originalurl&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;str.substring(nStart&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;5&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;nbsp;nEnd);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;Deal&amp;nbsp;with&amp;nbsp;the Percent-encoding&amp;nbsp;characters,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;Note&amp;nbsp;that&amp;nbsp;'g'&amp;nbsp;is&amp;nbsp;required&amp;nbsp;in&amp;nbsp;order&amp;nbsp;to&amp;nbsp;perform&amp;nbsp;global&amp;nbsp;replacing-&amp;nbsp;an&amp;nbsp;annoying&amp;nbsp;'feature'&amp;nbsp;of&amp;nbsp;javascript&lt;/span&gt;&lt;span style="color: #008000"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;originalurl&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;originalurl.replace(&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;%3A&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;g,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;:&lt;/span&gt;&lt;span style="color: #000000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;).replace(&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;%2F&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;g,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;'&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;div&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;Open "clean"&amp;nbsp;url in a new&amp;nbsp;window&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;window.open(originalurl,&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;_blank&lt;/span&gt;&lt;span style="color: #000000"&gt;"&lt;/span&gt;&lt;span style="color: #000000"&gt;);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;/&lt;/span&gt;&lt;span style="color: #000000"&gt;script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;值得一提的&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这是我第一次写javascript，所以有经验的读者请指出其中的错误，或者能给我提供更正后的代码，我会更新。&lt;/p&gt;&#xD;
&lt;p&gt;另外在处理URL转义字符时，我只处理了':'和'/'，但是其他的字符也是有可能用百分号来表示的，只是我还没有遇到。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/kennyzx/aggbug/2115752.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/kennyzx/archive/2011/07/25/2115752.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/kennyzx/archive/2008/11/25/1340975.html</id><title type="text">在VStudio中对断点进行分组管理</title><summary type="text">由于在工程的调试中，积累了了很多的断点。而每次调试之中，只有一部分的断点是和当前调试相关的，希望能把其他的无关断点disable掉。而如果每次都要断点窗口去一一勾选，效率并不高。所以产生了将断点进行分组管理的想法，这样可以一次性的enable/disable一组或多组断点。</summary><published>2008-11-25T14:48:00Z</published><updated>2008-11-25T14:48:00Z</updated><author><name>kennyzx</name><uri>http://www.cnblogs.com/kennyzx/</uri></author><link rel="alternate" href="http://www.cnblogs.com/kennyzx/archive/2008/11/25/1340975.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/kennyzx/archive/2008/11/25/1340975.html"/></entry></feed>
