Skip to content

Commit

Permalink
Opera is also vulnerable to the getElementById-returning-name issue, …
Browse files Browse the repository at this point in the history
…fixed it there as well. Also had to tweak the UTF8 regexps to work in Safari (Safari doesn't support \uXXXX in RegExps, lame.)
  • Loading branch information
jeresig committed Mar 25, 2007
1 parent 44769df commit 3446c3a
Showing 1 changed file with 6 additions and 7 deletions.
13 changes: 6 additions & 7 deletions src/selector/selector.js
Expand Up @@ -76,7 +76,8 @@ jQuery.extend({
/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,

// Match: :even, :last-chlid, #id, .class
/^([:.#]*)((?:[\w\u0128-\uFFFF*-]|\\.)+)/
new RegExp("^([:.#]*)(" +
( jQuery.chars = "(?:[\\w\u0128-\uFFFF*-]|\\\\.)" ) + "+)")
],

token: [
Expand Down Expand Up @@ -204,7 +205,7 @@ jQuery.extend({

} else {
// Optomize for the case nodeName#idName
var re2 = /^(\w+)(#)((?:[\w\u0128-\uFFFF*-]|\\.)+)/;
var re2 = new RegExp("^(\\w+)(#)(" + jQuery.chars + "+)");
var m = re2.exec(t);

// Re-organize the results, so that they're consistent
Expand All @@ -214,7 +215,7 @@ jQuery.extend({
} else {
// Otherwise, do a traditional filter check for
// ID, class, and element selectors
re2 = /^([#.]?)((?:[\w\u0128-\uFFFF*-]|\\.)*)/;
re2 = new RegExp("^([#.]?)(" + jQuery.chars + "*)");
m = re2.exec(t);
}

Expand All @@ -229,17 +230,15 @@ jQuery.extend({

// Do a quick check for the existence of the actual ID attribute
// to avoid selecting by the name attribute in IE
if ( jQuery.browser.msie && oid && oid.id != m[2] )
if ( (jQuery.browser.msie||jQuery.browser.opera) && oid && oid.id != m[2] )
oid = jQuery('[@id="'+m[2]+'"]', elem)[0];

// Do a quick check for node name (where applicable) so
// that div#foo searches will be really fast
ret = r = oid && (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : [];

} else {
// We need to find all descendant elements, it is more
// efficient to use getAll() when we are already further down
// the tree - we try to recognize that here
// We need to find all descendant elements
for ( var i = 0, rl = ret.length; i < rl; i++ ) {
// Grab the tag name being searched for
var tag = m[1] != "" || m[0] == "" ? "*" : m[2];
Expand Down

0 comments on commit 3446c3a

Please sign in to comment.