modernizr.details.js 931 B

12345678910111213141516171819202122232425262728293031
  1. // By @mathias, based on http://mths.be/axh
  2. define([
  3. 'modernizr/modernizr'
  4. ], function(){
  5. Modernizr.addTest('details', function() {
  6. var doc = document,
  7. el = doc.createElement('details'),
  8. fake,
  9. root,
  10. diff;
  11. if (!('open' in el)) { // return early if possible; thanks @aFarkas!
  12. return false;
  13. }
  14. root = doc.body || (function() {
  15. var de = doc.documentElement;
  16. fake = true;
  17. return de.insertBefore(doc.createElement('body'), de.firstElementChild || de.firstChild);
  18. }());
  19. el.innerHTML = '<summary>a</summary>b';
  20. el.style.display = 'block';
  21. root.appendChild(el);
  22. diff = el.offsetHeight;
  23. el.open = true;
  24. diff = diff != el.offsetHeight;
  25. root.removeChild(el);
  26. fake && root.parentNode.removeChild(root);
  27. return diff;
  28. });
  29. });