<?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>Christoph Schüßler &#187; Browser</title>
	<atom:link href="http://herr-schuessler.de/blog/topics/browser/feed/" rel="self" type="application/rss+xml" />
	<link>http://herr-schuessler.de/blog</link>
	<description>Dev-Blog</description>
	<lastBuildDate>Sat, 10 Sep 2011 11:55:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Don&#8217;t use IE7 compatibility mode when testing JavaScript</title>
		<link>http://herr-schuessler.de/blog/dont-use-ie7-compatibility-mode-when-testing-javascript/</link>
		<comments>http://herr-schuessler.de/blog/dont-use-ie7-compatibility-mode-when-testing-javascript/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 17:17:41 +0000</pubDate>
		<dc:creator>Christoph Schüßler</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[browser quirks]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://herr-schuessler.de/blog/?p=319</guid>
		<description><![CDATA[I just learned the hard way that IE8 in IE7 compatibility mode is not the same as Internet Explorer 7. Apparently IE7 compatibility mode uses the IE8 JavaScript engine and you won&#8217;t be able to detect IE7-only JavaScript bugs when &#8230; <a href="http://herr-schuessler.de/blog/dont-use-ie7-compatibility-mode-when-testing-javascript/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I just learned the hard way that IE8 in IE7 compatibility mode is <strong>not the same</strong> as Internet Explorer 7. Apparently IE7 compatibility mode uses the IE8 JavaScript engine and you won&#8217;t be able to detect IE7-only JavaScript bugs when testing and developing in compatibility mode.<br />
<span id="more-319"></span></p>
<p>I recommend using <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a>, it will throw all the errors you ever wanted (NOT!) at you. Combine it with <a href="http://getfirebug.com/firebuglite">Firebug Lite</a> and sleep a little better.</p>
]]></content:encoded>
			<wfw:commentRss>http://herr-schuessler.de/blog/dont-use-ie7-compatibility-mode-when-testing-javascript/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overlapping select field bug in IE6 &#8211; solved jQuery-style</title>
		<link>http://herr-schuessler.de/blog/overlapping-select-field-bug-in-ie6-solved-jquery-style/</link>
		<comments>http://herr-schuessler.de/blog/overlapping-select-field-bug-in-ie6-solved-jquery-style/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 08:43:25 +0000</pubDate>
		<dc:creator>Christoph Schüßler</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[browser quirks]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://herr-schuessler.de/blog/?p=282</guid>
		<description><![CDATA[When using drop-down navigation like Son of Suckerfish, which entails placing absolute positioned layers above the content layer, Internet Explorer 6 displays once again really stupid behavior when it comes to HTML forms with the SELECT element. When the drop-down &#8230; <a href="http://herr-schuessler.de/blog/overlapping-select-field-bug-in-ie6-solved-jquery-style/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>When using drop-down navigation like <a href="http://htmldog.com/articles/suckerfish/dropdowns/">Son of Suckerfish</a>, which entails placing absolute positioned layers above the content layer, Internet Explorer 6 displays once again really stupid behavior when it comes to <code>HTML</code> forms with the <code>SELECT</code> element. When the drop-down layer hovers above a form, the <code>SELECT</code> still shines through, it stays above it and cannot be convinced by <code>z-index</code> or any other CSS trick to go where it belongs.<br />
<span id="more-282"></span></p>
<p>Some solutions have been proposed, among them:</p>
<ul>
<li>hiding the <code>select</code> element on hover</li>
<li>replacing it with an <code>input</code> element on hover</li>
<li>or <a href="http://www.bringdownie6.com/">stop caring about IE6</a> altogether</li>
</ul>
<p>These solutions all include drawbacks in usability or undesired UI changes, which can be confusing for the user. Another work-around, which is quite unnoticeable in the front-end is to <a href="http://www.macridesweb.com/oltest/IframeShim.html">place an invisible, empty <code>IFRAME</code></a> in the layer that will be positioned above the <code>SELECT</code> element.</p>
<p>Here&#8217;s how to do this jQuery-style:</p>
<p><strong>The jQuery-Plugin:</strong></p>
<pre name="code" class="js">
jQuery.fn.activeXOverlap = function() { 

    $(this).each(function(i){
        var h   = $(this).outerHeight();
        var w   = $(this).outerWidth();
        var iframe  = '<!--[if IE 6]>' +
                      '<iframe src="javascript:false;" style="height: ' +
                      h +
                      'px; width: ' +
                      w +
                      'px" class="selectOverlap">' +
                      '</iframe>' +
                      '<![endif]-->'
        $(this).prepend(iframe);
    });
}
</pre>
<p><strong>The Plugin setup:</strong></p>
<pre name="code" class="js">
$(function() {
    $('.myHoverClass').activeXOverlap();
});
</pre>
<p>where <code>.myHoverClass</code> references all elements that should hover above the select.</p>
<p><strong>The required CSS:</strong></p>
<pre name="code" class="css">
<!--[if IE 6]>
iframe.selectOverlap {
    position: absolute;
    z-index: -1;
    filter: mask();
    border: 0;
    margin: 0;
    padding: 0;
    top: 0;
    left: 0;
    overflow: hidden;
    filter: progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0);
}
<![endif]-->
</pre>
<p>What this does is placing an <code>Iframe</code> behind every selected element, scaling it to the correct dimensions and hiding it from all browsers but IE6.</p>
]]></content:encoded>
			<wfw:commentRss>http://herr-schuessler.de/blog/overlapping-select-field-bug-in-ie6-solved-jquery-style/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery.popeye 1.0 released</title>
		<link>http://herr-schuessler.de/blog/jquery-popeye-1-0-released/</link>
		<comments>http://herr-schuessler.de/blog/jquery-popeye-1-0-released/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 09:26:43 +0000</pubDate>
		<dc:creator>Christoph Schüßler</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://herr-schuessler.de/blog/?p=198</guid>
		<description><![CDATA[jQuery.popeye 2.0 has been released. Older Versions are no longer supported. More than 100 comments on the first release of jQuery.popeye, an appearance on the frontpage of delicious.com and coverage in uncounted blogs&#8230; I certainly didn&#8217;t expect that much interest. &#8230; <a href="http://herr-schuessler.de/blog/jquery-popeye-1-0-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div class="redirect">
<a href="http://dev.herr-schuessler.de/jquery/popeye/">jQuery.popeye 2.0</a> has been released. Older Versions are no longer supported.
</div>
<p>More than 100 comments on <a href="http://herr-schuessler.de/blog/jquerypopeye-an-inline-lightbox-alternative/">the first release of <em>jQuery.popeye</em></a>, an appearance on the frontpage of <a href="http://delicious.com/url/1f628122d2c02972da99c352a40003c3">delicious.com</a> and coverage in uncounted blogs&#8230;</p>
<p>I certainly didn&#8217;t expect that much interest. The numerous feature requests,  suggestions, bug reports and, in the end, acknowledgments and nice comments prompted me to continue development, as promised. So <a href="http://plugins.jquery.com/project/popeye">here it is</a>, in a major release, a <strong>completely rewritten and overhauled</strong> <em>jQuery.popeye</em>, the image gallery plugin that started as an alternative to the famous JavaScript <a href="http://www.huddletogether.com/projects/lightbox2/">lightbox</a>.<br />
<span id="more-198"></span></p>
<p><a class="download" href="http://plugins.jquery.com/project/popeye">Download <em>jQuery.popeye 1.0</em><br />
from the jQuery Plugin Repository</a></p>
<h4>What&#8217;s new</h4>
<p>When you <a href="http://dev.herr-schuessler.de/examples/jquery-popeye-1-0/">check out the example installation</a>, you&#8217;ll immediately notice some changes and new features:</p>
<ul>
<li>The <strong>navigation buttons</strong> (next and previous image, enlarge / compact image) have moved. They will appear on mouseover on the popeye box and fade out accordingly. As a result, the user interface is less cluttered with navigational elements.</li>
<li>Navigation is also possible in <strong>enlarged mode</strong>, as this was a big feature request.</li>
<li>The <strong>caption</strong> is hidden by default and also shows on mouseover. It automatically adjusts to the amount of text with a smooth transition.</li>
<li>The <strong>image counter</strong> can be placed either as an overlay above the image (and thus serves as a hint to the user that there&#8217;s more than one image to see), or it can be inserted in the caption or even completely turned of.</li>
<li>There&#8217;s a <strong>new basic skin</strong>. I deliberately kept it quite blunt as to encourage you to design your own skin that better fits your website design. Designing a new skin is quite simple via adjustments to the included jquery.popeye.style.css.</li>
<li>The original image list is hidden via CSS, so the user won&#8217;t see anything until <em>jQuery.popeye</em> has preloaded all the thumbnail images and then inserted the gallery in the page. In order to prevent a jumping effect once the images load, a placeholder <code>div</code> can be added to the original html which will be replaced by the gallery box.</li>
</ul>
<h4>Under the hood</h4>
<p>Version 1.0 comes with a fresh set of options:</p>
<table class="table" border="0">
<tbody>
<tr>
<th>Option</th>
<th>Type</th>
<th>Default</th>
<th>Description</th>
</tr>
<tr>
<td class="hilite"><code>jsclass</code></td>
<td>string</td>
<td><code>'ppy-js'</code></td>
<td>a class name applied to the jQuery.popeye root element when JavaScript is active (can be used for extra styling)</td>
</tr>
<tr>
<td class="hilite"><code>nojsclass</code></td>
<td>string</td>
<td><code>'ppy-no-js'</code></td>
<td>the class name of an optional element which can be placed in the HTML code inside the jQuery.popeye root element. This element will be removed once jQuery.popeye has loaded. It can be used as a placeholder.</td>
</tr>
<tr>
<td class="hilite"><code>eclass</code></td>
<td>string</td>
<td><code>'ppy-expanded'</code></td>
<td>a class name to be applied to the enlarged jQuery.popeye box (can be used for extra styling)</td>
</tr>
<tr>
<td class="hilite"><code>lclass</code></td>
<td>string</td>
<td><code>'ppy-loading'</code></td>
<td>a class name to be applied to the stage while loading image (can contain loading indicator graphic)</td>
</tr>
<tr>
<td class="hilite"><code>dlclass</code></td>
<td>string</td>
<td><code>'ppy-left'</code></td>
<td>a class name to be applied to the navigational overlay if popeye opens to the left (can be used to achieve left orientation of overlay)</td>
</tr>
<tr>
<td class="hilite"><code>drclass</code></td>
<td>string</td>
<td><code>'ppy-right'</code></td>
<td>a class name to be applied to the navigational overlay if popeye opens to the right (can be used to achieve right orientation of overlay)</td>
</tr>
<tr>
<td class="hilite"><code>direction</code></td>
<td>string</td>
<td><code>'left'</code></td>
<td>direction that popeye-box opens, can be <code>'left'</code> or <code>'right'</code></td>
</tr>
<tr>
<td class="hilite"><code>duration</code></td>
<td>integer</td>
<td><code>250</code></td>
<td>duration of transitional effect when enlarging or closing the box</td>
</tr>
<tr>
<td class="hilite"><code>opacity</code></td>
<td>integer</td>
<td><code>0.7</code></td>
<td>opacity of navigational overlay</td>
</tr>
<tr>
<td class="hilite"><code>countpos</code></td>
<td>string</td>
<td><code>'overlay'</code></td>
<td>placement of image counter &#8211; can be <code>false</code>, <code>'overlay'</code> or <code>'caption'</code></td>
</tr>
<tr>
<td class="hilite"><code>caption</code></td>
<td>boolean</td>
<td><code>true</code></td>
<td>wether to display a caption based on title attribute</td>
</tr>
<tr>
<td class="hilite"><code>easing</code></td>
<td>string</td>
<td><code>'swing'</code></td>
<td>easing type, can be <code>'swing'</code>, <code>'linear'</code> or any of <a href="http://gsgd.co.uk/sandbox/jquery/easing/">jQuery Easing Plugin</a> types (Plugin required)</td>
</tr>
<tr>
<td class="hilite"><code>nlabel</code></td>
<td>string</td>
<td>n/a</td>
<td>label for next button</td>
</tr>
<tr>
<td class="hilite"><code>plabel</code></td>
<td>string</td>
<td>n/a</td>
<td>label for previous button</td>
</tr>
<tr>
<td class="hilite"><code>oflabel</code></td>
<td>string</td>
<td><code>'of'</code></td>
<td>label for image count text (e.g. 1 <em>of</em> 14)</td>
</tr>
<tr>
<td class="hilite"><code>blabel</code></td>
<td>string</td>
<td>n/a</td>
<td>label for enlarge button</td>
</tr>
<tr>
<td class="hilite"><code>clabel</code></td>
<td>string</td>
<td><code>'Click to close'</code></td>
<td>label for expanded stage (to hint closing)</td>
</tr>
</tbody>
</table>
<h4>Usage</h4>
<p>The HTML structure hasn&#8217;t changed, but if you like, you can now place an extra element (which can serve as a placeholder for users without JS) in the source.</p>
<pre name="code" class="html">
<div class="popeye">
<ul>
<li><a href="url_of_large_image.jpg">
                <img src="url_of_thumbnail.jpg" alt="The caption string" /></a></li>
<li><a href="url_of_large_image.jpg">
                <img src="url_of_thumbnail.jpg" alt="The caption string" /></a></li>
<li><a href="url_of_large_image.jpg">
                <img src="url_of_thumbnail.jpg" alt="The caption string" /></a></li>
<li>...</li>
</ul>
<div class="ppy-no-js">
        This element will be deleted once the gallery loads</div>
</div>
</pre>
<h4>Support</h4>
<p><strike>Please leave your comments and requests here in the blog. Bug reports can also be filed at the <a href="http://plugins.jquery.com/node/add/project-issue/popeye">plugin repository issue tracker</a>. If you make use of <em>jQuery.popeye</em> in one of your projects,I would be really interested to see the result! So feel free to link your site in the comment section.</strike></p>
<div class="redirect">
<a href="http://dev.herr-schuessler.de/jquery/popeye/">jQuery.popeye 2.0</a> has been released. Older Versions are no longer supported.
</div>
]]></content:encoded>
			<wfw:commentRss>http://herr-schuessler.de/blog/jquery-popeye-1-0-released/feed/</wfw:commentRss>
		<slash:comments>77</slash:comments>
		</item>
		<item>
		<title>Selecting input-fields with maxlength via jQuery</title>
		<link>http://herr-schuessler.de/blog/selecting-input-fields-with-maxlength-via-jquery/</link>
		<comments>http://herr-schuessler.de/blog/selecting-input-fields-with-maxlength-via-jquery/#comments</comments>
		<pubDate>Fri, 05 Dec 2008 04:37:18 +0000</pubDate>
		<dc:creator>Christoph Schüßler</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[HTML & CSS]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[browser quirks]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[maxlength]]></category>
		<category><![CDATA[selector]]></category>

		<guid isPermaLink="false">http://herr-schuessler.de/?p=178</guid>
		<description><![CDATA[524288? 2147483647? -1? No, that&#8217;s not my bank account balance&#8230; Unlike any other attribute, maxlength is implicitly present on any input-element. I had to find this out the hard way trying to select only input-elements with an explicitly set maxlength &#8230; <a href="http://herr-schuessler.de/blog/selecting-input-fields-with-maxlength-via-jquery/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>
524288?<br />
2147483647?<br />
-1?<br />
No, that&#8217;s not my bank account balance&#8230;
</p></blockquote>
<p>Unlike any other attribute, <code>maxlength</code> is implicitly present on any <code>input</code>-element. I had to find this out the hard way trying to select only <code>input</code>-elements with an explicitly set <code>maxlength</code> via the jQuery-selector <code>input[maxlength]</code>.<br />
<span id="more-178"></span></p>
<p>Well, that didn&#8217;t work. <code>input[maxlength]</code> returns all inputs, regardless of whether they have <code>maxlength</code> or not. The only conclusion this leaves us with is that <strong>browsers add a certain maxlength-value implicitly</strong> to any <code>input</code>-field.</p>
<h4>What&#8217;s my browser doing with maxlength?</h4>
<p>That&#8217;s exactly what I asked myself. <a href="http://dev.herr-schuessler.de/examples/maxlength-test/">A quick browser test</a> left me quite surprised, but, hey &ndash; what did I expect &#8211; every browser behaving the same? Not in this world&#8230;</p>
<p>Every browser rendering engine implies a different value. The most reasonable browsers are Firefox (surprised?) and Opera &#8211; they are at least assuming a negative value. The other values <del>seem (at least to me, maybe I&#8217;m just missing some nerdy inside joke) completely arbitrary</del> are natural limits: 2147483647 is the highest possible 32-bit-number (<code>2^32 /2</code> or <code>0111 1111 1111 1111 1111 1111 1111 1111</code>), while 524288 is the same in 16 bit:</p>
<table class="table">
<tr>
<th>Browser</th>
<th>OS</th>
<th>Version</th>
<th>Implicit maxlength-value</th>
</tr>
<tr>
<td>Firefox</td>
<td>Windows</td>
<td>3</td>
<td class="hilite">-1</td>
</tr>
<tr>
<td>Internet Explorer</td>
<td>Windows</td>
<td>7</td>
<td class="hilite">2147483647</td>
</tr>
<tr>
<td>Safari</td>
<td>Windows</td>
<td>3.2</td>
<td class="hilite">524288</td>
</tr>
<tr>
<td>Opera</td>
<td>Windows</td>
<td>9.6</td>
<td class="hilite">-1</td>
</tr>
<tr>
<td>Chrome</td>
<td>Windows</td>
<td>0.4</td>
<td class="hilite">524288</td>
</tr>
</table>
<h4>jQuery to the rescue</h4>
<p>So back to the original problem &#8211; my solution for selecting only <code>input</code>-fields with <code>maxlength</code>-attributes based on these findings is as follows:</p>
<pre name="code" class="js">
var inputs = $('input[maxlength!=-1][maxlength!=524288][maxlength!=2147483647]');
</pre>
<p>Ugly, I know. But it works.</p>
<p><a class="download" href="http://dev.herr-schuessler.de/examples/maxlength-test/">Take the <em>Browser Test</em><br />
and post your result in the comment section!</a></p>
<h4>Why?</h4>
<p>Why would I want to select only this subset of input elements anyway? In my case, it was to <a href="http://www.bradlis7.com/main/jquery-chars-remaining">display the number of total and remaining characters a user could enter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://herr-schuessler.de/blog/selecting-input-fields-with-maxlength-via-jquery/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>HTML-Code in verschiedenen Browsern testen</title>
		<link>http://herr-schuessler.de/blog/design-in-verschiedenen-browsern-testen/</link>
		<comments>http://herr-schuessler.de/blog/design-in-verschiedenen-browsern-testen/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 10:33:04 +0000</pubDate>
		<dc:creator>Christoph Schüßler</dc:creator>
				<category><![CDATA[Browser]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Deutsch]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://tutorials.anestetic.net/index.php/2007/02/08/design-in-verschiedenen-browsern-testen/</guid>
		<description><![CDATA[Einige Tools für alle, die keinen Fuhrpark von Macs, Windows- und Linux-PCs ihr eigen nennen und trotzdem ihr Design schnell für Internet Explorer 5, 6, 7, Firefox, Safari, Konqueror und Opera testen möchten: Browsershots.org Erstellt mehr oder weniger schnell (zwischen &#8230; <a href="http://herr-schuessler.de/blog/design-in-verschiedenen-browsern-testen/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Einige Tools für alle, die keinen Fuhrpark von Macs, Windows- und Linux-PCs ihr eigen nennen und trotzdem ihr Design schnell für Internet Explorer 5, 6, 7, Firefox, Safari, Konqueror und Opera testen möchten:<br />
<span id="more-14"></span></p>
<p><strong>Browsershots.org</strong><br />
Erstellt mehr oder weniger schnell (zwischen 10 Min. und 4 Stunden) Screenshots auf einer Vielzahl von Plattform-Browser-Kombi.<br />
<a href="http://browsershots.org">http://browsershots.org</a></p>
<p><strong>Multiple IE</strong><br />
Tredosoft.com stellt diesen netten Installer zur Verfügung, mit dem sich nach einem Update auf IE7 alte IEs als Standalone-Versionen einrichten lassen.<br />
<a href="http://tredosoft.com/Multiple_IE">http://tredosoft.com/Multiple_IE</a></p>
<p><strong>IE Tester</strong><br />
Ein Webbrowser, der verschiedene Rendering-Engines emuliert. Kann inzwischen neben IE6 und IE7 auch IE8 Beta sowie weitere der üblichen Verdächtigen.<br />
<a href="http://www.my-debugbar.com/wiki/IETester/HomePage">http://www.my-debugbar.com/wiki/IETester/HomePage</a></p>
]]></content:encoded>
			<wfw:commentRss>http://herr-schuessler.de/blog/design-in-verschiedenen-browsern-testen/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

