<?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>A colourful bubble? &#187; bug</title>
	<atom:link href="http://www.paopao.name/tag/bug/feed" rel="self" type="application/rss+xml" />
	<link>http://www.paopao.name</link>
	<description>生活 读书 新知</description>
	<lastBuildDate>Wed, 20 May 2009 02:22:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>WordPress 搜索框添加文字提示</title>
		<link>http://www.paopao.name/programme/javascript/wordpress-searchbox-text-prompt.html</link>
		<comments>http://www.paopao.name/programme/javascript/wordpress-searchbox-text-prompt.html#comments</comments>
		<pubDate>Sun, 10 May 2009 11:29:51 +0000</pubDate>
		<dc:creator>paopao</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[WebDevelop]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[searchbox]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.paopao.name/?p=165</guid>
		<description><![CDATA[搜索框里显示文字提示是目前常见的一种技术了，但是实现的方法有很多种，mg12 介绍一个使用 jQuery 添加文字提示的方法。
这个方法相比于原来直接添加 &#8220;input&#8221; 元素的值为提示文字的... ]]></description>
			<content:encoded><![CDATA[<p>搜索框里显示文字提示是目前常见的一种技术了，但是实现的方法有很多种，<a href="http://www.neoease.com/" target="_blank">mg12</a> 介绍一个<a href="http://www.neoease.com/wordpress-searchbox-tip/" target="_blank">使用 jQuery 添加文字提示</a>的方法。</p>
<p>这个方法相比于原来直接添加 &#8220;input&#8221; 元素的值为提示文字的办法，提升了可用性和可访问性，不过也存在两个缺点。一个是 mg12 自己也提到的不方便国际化的问题；另一个则是，如果用户要搜索的关键词和默认的文字提示相同时，则无法进行搜索。当然，你也可以认为第二个问题是我钻牛角尖，也许根本没有人会用默认的文字提示作为搜索关键词。其实我也认为不会出现这种情况，我只是想提出另一种思路来实现搜索框的文字提示，这个办法应该可以解决上面提到的两个问题。</p>
<p>下面是我修改我这个主题的搜索框提示的方法：</p>
<p>首先我需要对搜索框部分的主题文件做一点小小的修改</p>
<pre class="brush: php;">
&lt;form method=&quot;get&quot; id=&quot;searchform&quot; action=&quot;&lt;?php bloginfo('url'); ?&gt;/&quot;&gt;
&lt;div&gt;&lt;input type=&quot;text&quot; value=&quot;&lt;?php the_search_query(); ?&gt;&quot; name=&quot;s&quot; id=&quot;s&quot; title=&quot;&lt;?php _e('Type text to search here...'); ?&gt;&quot; /&gt;
&lt;input type=&quot;submit&quot; id=&quot;searchsubmit&quot; value=&quot;Search&quot; /&gt;
&lt;/div&gt;
&lt;/form&gt;
</pre>
<p>以上是我这个主题文件的 searchform.php 文件的内容，我做的修改只是给 &#8220;input&#8221; 元素添加了一个属性</p>
<blockquote><p> title=&#8221;&lt;?php _e(&#8217;Type text to search here&#8230;&#8217;); ?&gt;&#8221; </p></blockquote>
<p>这样就解决了提示文字的国际化问题，如果在语言文件里有定义就可以直接使用了。</p>
<p>然后就是 jQuery 的部分</p>
<pre class="brush: jscript;">
jQuery(document).ready(function(){
    // DOM 加载完毕时添加搜索提示
    // 修改搜索框的背景色为透明，以便显示其下方的文字
    $(&quot;input#s&quot;).css({backgroundColor:&quot;transparent&quot;});

    $(&quot;input#s&quot;)
        // 将搜索框的上层元素改为相对定位
        .parent().css({position:&quot;relative&quot;})
        // 添加一个绝对定位的 span 至搜索框的下方来显示文字提示
        .append('&lt;span id=&quot;searchtip&quot; style=&quot;position:absolute; top:2px; left:10px; color:#999; display:none; z-index:-1;&quot;&gt;' + $(&quot;input#s&quot;).attr(&quot;title&quot;) + '&lt;/span&gt;');

    // 如果搜索框内容为空则显示提示
    if($(&quot;input#s&quot;).val() == &quot;&quot;) {
        $(&quot;#searchtip&quot;).show();
    }

    // 当鼠标聚焦在搜索框
    $(&quot;input#s&quot;).focus(function(){
        // 如果搜索框内容为空则隐藏提示
        if($(this).val() == &quot;&quot;) {
            $(&quot;#searchtip&quot;).hide();
        }
    }).blur(function(){
        // 如果搜索框内容为空则显示提示
        if($(this).val() == &quot;&quot;) {
            $(&quot;#searchtip&quot;).show();
        }
    });

    // 当搜索表单提交时
    $(&quot;#searchform&quot;).submit(function(){
        // 如果搜索框内容为空则不提交
        if($(&quot;input#s&quot;).val() == &quot;&quot;) {
            return false;
        }
        return true;
    });

    // 解决 IE 8 透明背景色的问题
    $(&quot;#searchtip&quot;).click(function(){$(&quot;input#s&quot;).trigger(&quot;focus&quot;);});
});
</pre>
<p>这个方法的原理也很简单，就是在搜索框的后面加入一个绝对定位的 &#8220;span&#8221; 元素来显示文字提示，文字提示的内容则是通过获取搜索框的 title 值来添加。</p>
<p>以上就完成了搜索框文字提示的添加，下面是我在这个过程中遇到的一个问题。</p>
<p>注意到上面的最后一行代码了吗，是为了解决在 IE 8 下的一个问题的，本来可以不需要这行代码的，就是为了万恶的 IE &#8230;</p>
<p>问题是这样的，当一个绝对定位的元素位于一个 &#8220;input&#8221; 元素的下方时，在 IE 8 下你依旧可以用鼠标访问到这个元素，导致点击搜索框时无法获得焦点，在其他<a href="http://www.paopao.name/browsers">我测试的浏览器</a>中都没有这个问题。所以在 IE 8 下，需要为提示文字的 &#8220;span&#8221; 元素额外的绑定一个监听事件。而且有点奇怪的是，把 &#8220;input&#8221; 元素换成 &#8220;div&#8221; 元素后，IE 8 下的表现又和其他浏览器一致了。</p>
<p>关于这个问题我做了一个简单的<a href="http://paosha.net/demo/single/searchboxtip.html" target="_blank">演示 Demo</a> 页面，有兴趣的可以去看看，我手头没有 IE 7 和 IE 6 ，不知道这两个浏览器是不是存在同样的问题，另外如果你有解决这个问题的办法，也请多多指教。</p>
<img src="http://www.paopao.name/?ak_action=api_record_view&id=165&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.paopao.name/programme/javascript/wordpress-searchbox-text-prompt.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Opera浏览器处理disabled属性的bug</title>
		<link>http://www.paopao.name/programme/webdevelop/opera-browser-to-deal-with-the-disabled-attribute-bug.html</link>
		<comments>http://www.paopao.name/programme/webdevelop/opera-browser-to-deal-with-the-disabled-attribute-bug.html#comments</comments>
		<pubDate>Wed, 26 Nov 2008 13:00:23 +0000</pubDate>
		<dc:creator>paopao</dc:creator>
				<category><![CDATA[WebDevelop]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[button]]></category>
		<category><![CDATA[disabled]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[opera]]></category>

		<guid isPermaLink="false">http://www.paopao.name/computer/opera-browser-to-deal-with-the-disabled-attribute-bug.html</guid>
		<description><![CDATA[最近在看John Resig的《精通JavaScript》，作为JQuery的作者之一，技术实力自然不在话下。不过如果仔细看某些源代码的话，还是有些小问题的，也许是作者比较粗心吧，这里是中文版的勘误页面，... ]]></description>
			<content:encoded><![CDATA[<p>最近在看John Resig的《精通JavaScript》，作为JQuery的作者之一，技术实力自然不在话下。不过如果仔细看某些源代码的话，还是有些小问题的，也许是作者比较粗心吧，这里是<a href="http://realazy.org/jspro/erratra" target="_balnk">中文版的勘误页面</a>，再版的时候估计会好很多。</p>
<p>趁着读书时的热情，做了一些小的demo来练习，在上一个demo中发现opera浏览器在处理xhtml标签的&#8221;disabled&#8221;属性时有一个bug。 </p>
<p>事情是这样的，我在页面中有一个button元素，我希望它只能被点击一次，所以我在button的click事件中将它的&#8221;disabled&#8221;属性置为true。这样，点击一次之后，这个button就变成了灰色的不可用状态，我也确实无法再通过鼠标直接点击它了。事情到此都是没有问题的，接下来我希望能用键盘快捷键来控制这个button，于是我给它添加了&#8221;accesskey&#8221;属性，然后问题就来了，在我点击一次使得button变为不可用状态后，我还是可以通过accesskey来点击它。<br />
我在其他的浏览器上进行了同样的实验，结果表明在我现有的浏览器 (FireFox3, IE8, Safari3/win, Chrome0.4) 上都没有这个bug，除了opera。我目前使用的是opera 9.61版，不过我估计opera以前的版本也存在同样的bug。</p>
<p>进一步实验后，发现opera不只是在处理&#8221;accesskey&#8221;的点击时有bug，而是在处理除了鼠标直接点击之外的所有其他方式时都存在这个bug。比如在另一个JavaScript脚本里调用这个已经被禁用的button的click函数，甚至通过tab获取button焦点之后连续点击回车，都可以绕过button的disabled属性而触发它的click事件。</p>
<p>我写了一个demo页面来演示这个bug：<a href="http://www.paosha.net/demo/single/button.htm" target="_balnk">Button &amp; accesskey</a></p>
<p>还有要注意的一点就是accesskey在不同的浏览器中的使用方法并不一样。Opera中是通过shift+esc调出accesskey菜单再按相应的accesskey，IE8、Safari3/win以及Chrome0.4则都是使用alt+accesskey。FireFox3中则默认是alt+shift+accesskey，这避免了与浏览器菜单快捷键的冲突，不过可以通过修改about:config的ui.key.contentAccess键值来更改，这个<a href="http://www.genmous.cn/blog/article/31.htm" target="_balnk">键值的具体含义</a>如下：</p>
<ul>
<li>1 = Shift</li>
<li>2 = Ctrl</li>
<li>3 = Shift + Ctrl</li>
<li>4 = Alt</li>
<li>5 = Shift + Alt</li>
<li>6 = Alt + Ctrl</li>
<li>7 = Ctrl + Shift + Alt</li>
</ul>
<p>另外，在做这个demo的时候还发现了IE在处理button按钮时和其他浏览器的不同。在JavaScript脚本中通过element.value来获取button的value属性的值，在IE中得到的是button的innerHTML值，而在其他浏览器中得到的是正确的value属性的值。在网上搜了一下，这个问题有不少人问，解决办法也有不少，有的人建议改用input标签，不过我觉得不符合语义化的要求。还有通过Javascript和xml来解决的，感觉太麻烦了。最后我决定使用button的title属性来存储我需要的值，没办法，妥协一下吧。</p>
<img src="http://www.paopao.name/?ak_action=api_record_view&id=111&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.paopao.name/programme/webdevelop/opera-browser-to-deal-with-the-disabled-attribute-bug.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>IE 7 修复的 CSS 相关 bug</title>
		<link>http://www.paopao.name/programme/webdevelop/ie7-fixed-css-bugs.html</link>
		<comments>http://www.paopao.name/programme/webdevelop/ie7-fixed-css-bugs.html#comments</comments>
		<pubDate>Tue, 23 Oct 2007 14:08:07 +0000</pubDate>
		<dc:creator>paopao</dc:creator>
				<category><![CDATA[WebDevelop]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[ie7]]></category>

		<guid isPermaLink="false">http://www.paopao.name/?p=91</guid>
		<description><![CDATA[最近在看《精通 CSS 高级 Web 标准解决方案》这本书，里面的第9章是关于 bug 和 bug 的修复的。由于作者在写这本书的时候 IE 7 还没有推出，所以里面列举的都是 IE 6 和更低版本的几个 bug。现在 ... ]]></description>
			<content:encoded><![CDATA[<p>最近在看《精通 CSS 高级 Web 标准解决方案》这本书，里面的第9章是关于 bug 和 bug 的修复的。由于作者在写这本书的时候 IE 7 还没有推出，所以里面列举的都是 IE 6 和更低版本的几个 bug。现在 IE 7 已经推出蛮久了，占有率也达到了<a HREF="http://www.thecounter.com/stats/2007/October/browser.php" TARGET="_blank" TITLE="Browser Stats">24%</a>，仅次于 IE 6，而且据称修复了不少 bug，我就实地测试了一下书中提到的几个常见 bug，由于我的机子上装的是 IE 7，所以还特地去下了一个 IE 6 绿色版。同时附上我最常用的 Opera 浏览器的测试结果做比较。</p>
<p>1、双空白边浮动 bug</p>
<p><a HREF="http://photo11.yupoo.com/20071023/073610_1443924357_eznpwnei.jpg" TARGET="_blank" TITLE="点击看大图"><img SRC="http://photo11.yupoo.com/20071023/073610_1443924357.jpg" ALT="双空白边浮动 bug" TITLE="双空白边浮动 bug" WIDTH="500" HEIGHT="115" STYLE="width: 500px; height: 115px" /></a></p>
<p>测试结果：已修复</p>
<p>2、3像素文本偏移 bug</p>
<p><a HREF="http://photo11.yupoo.com/20071023/073609_659679476_dbwlabzk.jpg" TARGET="_blank" TITLE="点击看大图"><img SRC="http://photo11.yupoo.com/20071023/073609_659679476.jpg" ALT="3像素文本偏移 bug" TITLE="3像素文本偏移 bug" WIDTH="500" HEIGHT="116" STYLE="width: 500px; height: 116px" /></a></p>
<p>测试结果：已修复</p>
<p>3、IE 6 重复字符 bug</p>
<p><a TITLE="点击看原图" TARGET="_blank" HREF="http://photo11.yupoo.com/20071023/073610_1861645978_seahtwzt.jpg"><img STYLE="width: 500px; height: 267px" HEIGHT="267" WIDTH="500" TITLE="IE 6 重复字符 bug" ALT="IE 6 重复字符 bug" SRC="http://photo11.yupoo.com/20071023/073610_1861645978.jpg" /></a></p>
<p>测试结果：未修复</p>
<p>4、<a TITLE="Explorer 6 Duplicate Characters Bug" TARGET="_blank" HREF="http://www.positioniseverything.net/explorer/dup-characters.html">IE 6 躲猫猫 bug</a></p>
<p><a TITLE="点击看大图" TARGET="_blank" HREF="http://photo11.yupoo.com/20071023/073611_1106805970_ujnersng.jpg"><img STYLE="width: 500px; height: 121px" HEIGHT="121" WIDTH="500" TITLE="IE 6 躲猫猫 bug" ALT="IE 6 躲猫猫 bug" SRC="http://photo11.yupoo.com/20071023/073611_1106805970.jpg" /></a><br />
测试结果：已修复</p>
<p>5、相对容器中的绝对定位</p>
<p><a TITLE="点击看大图" TARGET="_blank" HREF="http://photo11.yupoo.com/20071023/073611_2138923778_ejqdjhea.jpg"><img STYLE="width: 500px; height: 201px" HEIGHT="201" WIDTH="500" TITLE="相对容器中的绝对定位" ALT="相对容器中的绝对定位" SRC="http://photo11.yupoo.com/20071023/073611_2138923778.jpg" /></a></p>
<p>测试结果：已修复</p>
<p>关于 IE 7 修复的其他 bug 列表可以看看<a TITLE="再见了Peekaboo/Guillotine" TARGET="_blank" HREF="http://www.osxcn.com/css/peekaboo-guillotine.html">这里</a>。</p>
<img src="http://www.paopao.name/?ak_action=api_record_view&id=91&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://www.paopao.name/programme/webdevelop/ie7-fixed-css-bugs.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
