Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Tests: Workaround IE issues in qunit-assert-domequal
In IE, `option` elements may have different initial `option` colors.
They may initially all be transparent, but later the selected
option gets a blue background with white text; we now ignore it.

The logic of `qunit-assert-domequal` was also fixed to use the same
method of fetching styles in all browsers; IE used to get a legacy
one meant for IE <9 due to a mistake in the performed check.
  • Loading branch information
mgol committed May 10, 2023
commit ba249efb6bee192d978a2f66eee4c717041f15fd
35 changes: 19 additions & 16 deletions tests/lib/qunit-assert-domequal.js
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ var domEqual = QUnit.assert.domEqual = function( selector, modifier, message ) {

domEqual.properties = [
"disabled",
"nodeName",
"readOnly"
];

Expand All @@ -59,7 +60,6 @@ domEqual.attributes = [
"class",
"href",
"id",
"nodeName",
"role",
"tabIndex",
"title"
Expand All @@ -76,23 +76,26 @@ function getElementStyles( elem ) {
var style = elem.ownerDocument.defaultView ?
elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
elem.currentStyle;
var key, len;

if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
len = style.length;
while ( len-- ) {
key = style[ len ];
if ( typeof style[ key ] === "string" ) {
styles[ camelCase( key ) ] = style[ key ];
}
var key, camelKey;
var len = style.length;

while ( len-- ) {
key = style[ len ];
camelKey = camelCase( key );

// Support: IE <=11+
// In IE, `option` elements may have different initial `option` colors.
// They may initially all be transparent, but later the selected
// option gets a blue background with white text; ignore it.
if ( document.documentMode && elem.nodeName.toLowerCase() === "option" && (
camelKey === "color" ||
camelKey.indexOf( "Color" ) === camelKey.length - "Color".length
) ) {
continue;
}

// Support: Opera, IE <9
} else {
for ( key in style ) {
if ( typeof style[ key ] === "string" ) {
styles[ key ] = style[ key ];
}
if ( typeof style[ key ] === "string" ) {
styles[ camelKey ] = style[ key ];
}
}

Expand Down