Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Merge branch 'master' of github.com:Modernizr/Modernizr

  • Loading branch information...
commit 60ee74ce7728075f920d689600cef6eabdbc7298 2 parents b9dcee2 + 5ffa3f9
@paulirish paulirish authored
Showing with 56 additions and 0 deletions.
  1. +56 −0 feature-detects/ruby.js
View
56 feature-detects/ruby.js
@@ -0,0 +1,56 @@
+/*
+ * Browser support test for the HTML5 <ruby>, <rt> and <rp> elements
+ *
+ * by @alrra
+ *
+ */
+
+Modernizr.addTest('ruby', function() {
+
+ var ruby = document.createElement('ruby'),
+ rt = document.createElement('rt'),
+ rp = document.createElement('rp'),
+ docElement = document.documentElement,
+ displayStyleProperty = 'display',
+ fontSizeStyleProperty = 'fontSize'; // 'fontSize' - because it`s only used for IE6 and IE7
+
+ ruby.appendChild(rp);
+ ruby.appendChild(rt);
+ docElement.appendChild(ruby);
+
+ // browsers that support <ruby> hide the <rp> via "display:none"
+ if((getStyle(rp,displayStyleProperty) == 'none') // for non-IE browsers
+ // but in IE browsers <rp> has "display:inline" so, the test needs other conditions:
+ || (getStyle(ruby,displayStyleProperty) == 'ruby' && getStyle(rt,displayStyleProperty) == 'ruby-text') // for IE8 & IE9
+ || (getStyle(rp,fontSizeStyleProperty) == '6pt' && getStyle(rt,fontSizeStyleProperty) == '6pt')) { // for IE6 & IE7
+
+ cleanUp();
+ return true;
+
+ } else {
+
+ cleanUp();
+ return false;
+
+ }
+
+ function getStyle(element, styleProperty) {
+ var result;
+
+ if (window.getComputedStyle) { // for non-IE browsers
+ result = document.defaultView.getComputedStyle(element,null).getPropertyValue(styleProperty);
+ } else if (element.currentStyle) { // for IE
+ result = element.currentStyle[styleProperty];
+ }
+
+ return result;
+ }
+
+ function cleanUp() {
+ docElement.removeChild(ruby); // the removed child node still exists in memory so ...
+ ruby = null;
+ rt = null;
+ rp = null;
+ }
+
+});
Please sign in to comment.
Something went wrong with that request. Please try again.