diff --git a/wp-includes/js/comment-reply.js b/wp-includes/js/comment-reply.js index bb76a1052c..184726d35e 100644 --- a/wp-includes/js/comment-reply.js +++ b/wp-includes/js/comment-reply.js @@ -1,6 +1,6 @@ var addComment = { moveForm: function( commId, parentId, respondId, postId ) { - var div, element, node, style, cssHidden, + var div, element, style, cssHidden, t = this, comm = t.I( commId ), respond = t.I( respondId ), @@ -47,40 +47,44 @@ var addComment = { return false; }; - // Set initial focus to the first form focusable element. + /* + * Set initial focus to the first form focusable element. + * Try/catch used just to avoid errors in IE 7- which return visibility + * 'inherit' when the visibility value is inherited from an ancestor. + */ try { for ( var i = 0; i < commentForm.elements.length; i++ ) { element = commentForm.elements[i]; + cssHidden = false; - // Skip form elements that are hidden or disabled. - if ( 'hidden' === element.type || element.hasAttribute( 'disabled' ) ) { - continue; + // Modern browsers. + if ( 'getComputedStyle' in window ) { + style = window.getComputedStyle( element ); + // IE 8. + } else if ( document.documentElement.currentStyle ) { + style = element.currentStyle; } - if ( 'getComputedStyle' in window ) { - node = element; - cssHidden = false; + /* + * For display none, do the same thing jQuery does. For visibility, + * check the element computed style since browsers are already doing + * the job for us. In fact, the visibility computed style is the actual + * computed value and already takes into account the element ancestors. + */ + if ( ( element.offsetWidth <= 0 && element.offsetHeight <= 0 ) || style.visibility === 'hidden' ) { + cssHidden = true; + } - while( node.parentNode ) { - style = window.getComputedStyle( node ); - - if ( style.display === 'none' || style.visibility === 'hidden' ) { - cssHidden = true; - break; - } - - node = node.parentNode; - } - - if ( cssHidden ) { - continue; - } + // Skip form elements that are hidden or disabled. + if ( 'hidden' === element.type || element.disabled || cssHidden ) { + continue; } element.focus(); // Stop after the first focusable element. break; } + } catch( er ) {} return false; diff --git a/wp-includes/js/comment-reply.min.js b/wp-includes/js/comment-reply.min.js index 6c6c4593e3..4042143700 100644 --- a/wp-includes/js/comment-reply.min.js +++ b/wp-includes/js/comment-reply.min.js @@ -1 +1 @@ -var addComment={moveForm:function(a,b,c,d){var e,f,g,h,i,j=this,k=j.I(a),l=j.I(c),m=j.I("cancel-comment-reply-link"),n=j.I("comment_parent"),o=j.I("comment_post_ID"),p=l.getElementsByTagName("form")[0];if(k&&l&&m&&n&&p){j.respondId=c,d=d||!1,j.I("wp-temp-form-div")||(e=document.createElement("div"),e.id="wp-temp-form-div",e.style.display="none",l.parentNode.insertBefore(e,l)),k.parentNode.insertBefore(l,k.nextSibling),o&&d&&(o.value=d),n.value=b,m.style.display="",m.onclick=function(){var a=addComment,b=a.I("wp-temp-form-div"),c=a.I(a.respondId);if(b&&c)return a.I("comment_parent").value="0",b.parentNode.insertBefore(c,b),b.parentNode.removeChild(b),this.style.display="none",this.onclick=null,!1};try{for(var q=0;q