New jQuery announced!

M

Matt Kruse

One more time: Can anyone demonstrate the problem that the workaround
exists for?

Yes:
http://ejohn.org/files/bugs/selected/

The bug (or quirk) is valid, but should be documented better, and it's
debatable whether it should even be "fixed" to begin with.

Here was my recommended change to the jQuery source:

// In Safari, if no option is explicitly selected and the first
// option gets selected by default, this option will report
// selected==false _while the page is still loading_. Accessing the
// containing select element causes the option to set its
// selected state correctly. Since options may be nested in
// <optgroup> elements, access two levels up just to be safe.
// Simply accessing the .selectedIndex property even if it doesn't
// exist shouldn't cause a problem in any browsers.
// http://ejohn.org/files/bugs/selected/
if ( name == "selected" && elem.parentNode ) {
elem.parentNode.selectedIndex;
if (elem.parentNode.parentNode) {
elem.parentNode.parentNode.selectedIndex;
}
}

Matt Kruse
 
G

Garrett Smith

Matt said:
Yes:
http://ejohn.org/files/bugs/selected/

The bug (or quirk) is valid, but should be documented better, and it's
debatable whether it should even be "fixed" to begin with.

Ah, so the selected property is true after onload, but false while the
page is loading. I can reproduce that.

The workaround of accessign - selectedIndex - of the parent causes the
OPTION's - selected - to be true.

That is considerably different then what the comment states:
| // Safari mis-reports the default selected property of a hidden option
Here was my recommended change to the jQuery source:

[snip]

HTat's a totally different comment then what appears in the jQUery source.

You wrote earlier that attr() deals only with string values. After I
posted that code, you wrote:-

| I didn't look at the source closely enough.

Did you propose that and then think they did not integrate that proposed
change, and instead decided to not return values from boolean properties?
 
M

Matt Kruse

Ah, so the selected property is true after onload, but false while the
page is loading. I can reproduce that.
The workaround of accessign - selectedIndex - of the parent causes the
OPTION's - selected - to be true.
That is considerably different then what the comment states:
| // Safari mis-reports the default selected property of a hidden option

Indeed, the source is misleading.
HTat's a totally different comment then what appears in the jQUery source..

Yup, I re-wrote it.
You wrote earlier that attr() deals only with string values. After I
posted that code, you wrote:-
| I didn't look at the source closely enough.
Did you propose that and then think they did not integrate that proposed
change, and instead decided to not return values from boolean properties?

I don't really follow. I posted my corrected comment and code for the
above issue to the jquery-dev mailing list a few days ago. I'm not
sure any attention was paid to it.

Matt Kruse
 
D

David Mark

Yes:http://ejohn.org/files/bugs/selected/

The bug (or quirk) is valid, but should be documented better, and it's
debatable whether it should even be "fixed" to begin with.

Here was my recommended change to the jQuery source:

// In Safari, if no option is explicitly selected and the first
// option gets selected by default, this option will report
// selected==false _while the page is still loading_. Accessing the
// containing select element causes the option to set its
// selected state correctly. Since options may be nested in
// <optgroup> elements, access two levels up just to be safe.
// Simply accessing the .selectedIndex property even if it doesn't
// exist shouldn't cause a problem in any browsers.
//http://ejohn.org/files/bugs/selected/
if ( name == "selected" && elem.parentNode ) {
  elem.parentNode.selectedIndex;
  if (elem.parentNode.parentNode) {
    elem.parentNode.parentNode.selectedIndex;
  }

}

Ridiculous. Try detecting the problem you are trying to solve (once
preferably). There's just no basis for this "solution" (which is also
outrageously inefficient). Blind faith has no place in programming
(especially not browser scripting).

During initial feature detection, you could create a SELECT, add a
selected option and check the selectedIndex property. If the SELECT
must be in a document to duplicate the quirk, wait until one is passed
and do the test on it (perhaps replacing the method as a result).
This stuff is not rocket science. :)

And didn't they just "punt" (again) on the "issue" of frames?
Something about "common use cases?" Why are you going for it here?
It's fourth and a mile. ;)
 
D

David Mark

Indeed, the source is misleading.

As usual. That's a by-product of the authors' general confusion.
Similar clueless comments are strewn throughout all of the "major"
libraries and the related code is now etched across the Web like a
scar. Even worse, newcomers reference these things like they were
bibles, gleefully re-posting the "wisdom" within, so the
misconceptions multiply.
Yup, I re-wrote it.

One baby step for mankind. :)
I don't really follow. I posted my corrected comment and code for the
above issue to the jquery-dev mailing list a few days ago. I'm not
sure any attention was paid to it.

Probably not. What does that tell you?
 
M

Matt Kruse

Ridiculous.  Try detecting the problem you are trying to solve (once
preferably).  There's just no basis for this "solution" (which is also
outrageously inefficient).

Detecting the problem would surely be less efficient than simply
accessing a property, when the latter works just fine.
 Blind faith has no place in programming
(especially not browser scripting).

It's not blind faith, it's tested and proven successful.
During initial feature detection, you could create a SELECT, add a
selected option and check the selectedIndex property.

What does selectedIndex have to do with anything? It returns the
 If the SELECT
must be in a document to duplicate the quirk, wait until one is passed
and do the test on it (perhaps replacing the method as a result).
This stuff is not rocket science.  :)

If you wait until the document is ready, then the problem goes away.

It's a weird quirk, but it looks like you are just spewing "answers"
when you've never actually looked at the problem.

Matt Kruse
 
D

David Mark

Detecting the problem would surely be less efficient than simply
accessing a property, when the latter works just fine.

Nonsense. You detect it _once_.
It's not blind faith, it's tested and proven successful.

Proven? It's certainly reasonable to expect the line will be
discarded as a noop. It's unreasonable to expect it will magically
updated the state of the DOM, particularly in the presented case where
the document hasn't finished parsing.
What does selectedIndex have to do with anything? It returns the
correct value. It's the <option> tag's 'selected' property that is
incorrect.

So you can eliminate that as a possible test, but it would certainly
make for a more logical workaround. ;)
If you wait until the document is ready, then the problem goes away.

I didn't say to wait until the document is ready.
It's a weird quirk, but it looks like you are just spewing "answers"

No, if there is one thing you should have picked up by now is that I
have the answers and they are virtually always the same. ;)

You seem sure you've isolated a quirk. Now write a test for it. You
couldn't get an answer from selectedIndex. What next? :)
when you've never actually looked at the problem.

I don't need to. I often solve such problems without seeing them
(usually in advance of their manifestation). ;)
 
G

Garrett Smith

Matt said:
Detecting the problem would surely be less efficient than simply
accessing a property, when the latter works just fine.

It works, but should it?

You noticed the problem in a page that was not completed (your linked
example). The OPTION's selected property was false before onload and
true after that. So if the OPTION's selected value were related to the
loaded state of the page, then it would make sense to check the state of
the page in the loop. However your observation was limited. The problem
is not related to the page state, but to whether the option is rendered.

You probably tried reading the selectedIndex, and then found that
worked, then tried to read the option.selected, and then found that
worked, and then figured that by simply accessing selectedIndex, the
selected property was achieved. Did I get that right?

Then you went to propose the workaround as a solution. That's a hack.

The problem was identified as: The default OPTION in a non-rendered
SELECT is false, when the option will be selected by default.

That is not a bug.

It would be a bug if, say, the option had the selected property set
before being rendered. For example, given a SELECT that is not yet part
of the dom, adding a selected OPTION to the SELECT should result in the
OPTION selected property being true.

var s = document.createElement("select");
s.options[0] = new Option("a", "a");
s.options[1] = new Option("a", "a", true, true); // Should be selected.

alert(s.options[1].selected); // Should be true.

Safari correctly elerts "true".

OTOH, if the browser is to make the determination of which option to set
the selected property on, you should not expect that information to be
available when the element is not in the DOM.

If we create two OPTIONs, set disabled=true on the first OPTION, the
second OPTION will be selected when the SELECT is rendered on the page.
There is no guarantee that the second OPTION will be selected before the
dom for that object is ready.

var s = document.createElement("select"),
o = new Option("a", "a"),
o2 = new Option("a", "a");

o.disabled = true;
s.add(o);
s.add(o2);

alert(o2.selected); // expect true or false.

To feature test the problem, create a SELECT, add an OPTION, and check
the OPTION's selected property. Save the result in a variable.

var s = document.createElement("select");
s.add(new Option("a"));
IS_NOT_DEFAULT_OPTION_IN_NONRENDRED_SELECTED = s.options[0].selected;

I suggest moving the workaround (and whatever comments may accompany)
with it and moved it out of the loop.

if(prop === "selected" && IS_NOTDEFAULT_OPTION_IN_NONRENDRED_NOTSELECTED) {
updateOptionSelected(elem);
}

function updateOptionSelected(elem) {
// If we're getting a false value, it may be that the option
// will be selected when fully rendered, but has not happened yet.
if(elem.selected === false) {
var selectedOption = elem.parentNode.options[s.selectedIndex];
selectedOption.selected = true;
}
}

Doesn't that make teh loop a lot clearer?

It will be a little slower in Safari but does not punish every browser
with that workaround.
It's not blind faith, it's tested and proven successful.


What does selectedIndex have to do with anything? It returns the
correct value. It's the <option> tag's 'selected' property that is
incorrect.

Accessign the selectedIndex is a hack. It "works" but by no guarantee of
any official or "de facto" standdard.
If you wait until the document is ready, then the problem goes away.
RIght, but your observation was limited. Based on what you observed,
checking isReady would seem like a sensible workaround. However, that
does not address the fact that the SELECT's DOM may not be ready.
It's a weird quirk, but it looks like you are just spewing "answers"
when you've never actually looked at the problem.

You provide a nonstandard workaround to get non-standard behavior
without looking closely enough at the problem. Your observations of the
problem are limited to "while the page is loading".

Your proposed workaround relies on an even bigger non-standard quirk. It
is possible that bigger quirk (your workaround) will not be present in
Safari 5 and the smaller quirk will remain. If and when that happens,
you're back to trying to figure out the problem.
 
D

David Mark

It works, but should it?

No. It's clearly a side effect. The loophole could close any time
(perhaps it already has in some nightly somewhere).
You noticed the problem in a page that was not completed (your linked
example). The OPTION's selected property was false before onload and
true after that. So if the OPTION's selected value were related to the
loaded state of the page, then it would make sense to check the state of
the page in the loop.

Would still not be a direct test.
However your observation was limited. The problem
is not related to the page state, but to whether the option is rendered.

You probably tried reading the selectedIndex, and then found that
worked, then tried to read the option.selected, and then found that
worked, and then figured that by simply accessing selectedIndex, the
selected property was achieved. Did I get that right?

Sounds like a reasonable explanation to me. That's how these things
are cobbled together, one misconception at a time.
Then you went to propose the workaround as a solution. That's a hack.
Exactly.


The problem was identified as: The default OPTION in a non-rendered
SELECT is false, when the option will be selected by default.

That is not a bug.

Certainly not. It's an "inconvenience" for the odd script(s) that
want to run queries before the document is ready though.
It would be a bug if, say, the option had the selected property set
before being rendered.

That would be odd. But still not a bug IMO.
For example, given a SELECT that is not yet part
of the dom, adding a selected OPTION to the SELECT should result in the
OPTION selected property being true.
Yes.


  var s = document.createElement("select");
  s.options[0] = new Option("a", "a");
  s.options[1] = new Option("a", "a", true, true); // Should be selected.

  alert(s.options[1].selected); // Should be true.

Safari correctly elerts "true".

OTOH, if the browser is to make the determination of which option to set
the selected property on, you should not expect that information to be
available when the element is not in the DOM.

Right. A feature test for this can be run immediately as adding the
element to the DOM would defeat its purpose (so no need to wait for
load).
If we create two OPTIONs, set disabled=true on the first OPTION, the
second OPTION will be selected when the SELECT is rendered on the page.
Yes.

There is no guarantee that the second OPTION will be selected before the
dom for that object is ready.
Right.


  var s = document.createElement("select"),
      o = new Option("a", "a"),
      o2 = new Option("a", "a");

  o.disabled = true;
  s.add(o);
  s.add(o2);

alert(o2.selected); // expect true or false.
Right.


To feature test the problem, create a SELECT, add an OPTION, and check
the OPTION's selected property. Save the result in a variable.

var s = document.createElement("select");
s.add(new Option("a"));
IS_NOT_DEFAULT_OPTION_IN_NONRENDRED_SELECTED = s.options[0].selected;

I like it.
I suggest moving the workaround (and whatever comments may accompany)
with it and moved it out of the loop.

if(prop === "selected" && IS_NOTDEFAULT_OPTION_IN_NONRENDRED_NOTSELECTED) {
   updateOptionSelected(elem);

}

function updateOptionSelected(elem) {
   // If we're getting a false value, it may be that the option
   // will be selected when fully rendered, but has not happened yet.
   if(elem.selected === false) {
     var selectedOption = elem.parentNode.options[s.selectedIndex];


Exactly. :)

     selectedOption.selected = true;
   }

}

Doesn't that make teh loop a lot clearer?

Yes and it actually makes logical sense (always a plus in
programming).
It will be a little slower in Safari but does not punish every browser
with that workaround.

Right. And the other rendition had severe penalties for all.
Accessign the selectedIndex is a hack. It "works" but by no guarantee of
any official or "de facto" standdard.

What I was getting at is that selectedIndex could be used to determine
if there was a contradiction. As expected, it could.
RIght, but your observation was limited. Based on what you observed,
checking isReady would seem like a sensible workaround.

It would be a bizarre inference, especially considering the
straightforward solution. ;)
 
R

RobG

Ah, so the selected property is true after onload, but false while the
page is loading. I can reproduce that.

The workaround of accessign - selectedIndex - of the parent causes the
OPTION's - selected - to be true.

I think it's a crock. The issue is that during load, if no option has
the selected attribute, the select's selectedIndex property will be
set to 0 but no option's selected property is set to true. That can
also be characterised as a problem with selectedIndex, as it should be
-1 at that moment.

If an option is given the selected attribute, it all works as
expected.

If the load event hasn't occurred yet, and the user *has* selected a
value, is the value reported correctly? I suspect it will be.

If the user hasn't selected an option and the form is submitted before
load has occurred, what will be the value of the select? Should this
be fixed by script, HTML or server code? Should it be fixed at all? Is
this only an issue for serialising forms prior to load? If so, should
it be dealt with there, and only if load hasn't occurred?

Anyhow, it is resolved by following advice in the HTML specification
from a decade ago:

"Since user agent behavior differs, authors should ensure that each
[select] includes a default pre-selected OPTION."

<URL: http://www.w3.org/TR/html4/interact/forms.html#h-17.6.1 >

I'd just document it, job done.
That is considerably different then what the comment states:
| // Safari mis-reports the default selected property of a hidden option

Which points to an inability to clearly identify the issue in the
first place.

And that reflects on the attr() method in general - there is no clear
idea of what it should do, other than some vague idea of John Resig's
that it should do "what the developer expects". Perhaps he knows the
mind of everyone using jQuery.

It seems to me he wants attr() to do what *he* thinks the developer
expects, despite being told by developers that it doesn't do what
*they* expect. The whole issue would go away if attr() reported
attribute values, a prop() method reported property values and css()
reported (say) computed CSS values.

Then users need only learn the difference between attributes and
properties once. Heaven forbid that they should understand the
technology they're working with.
 
G

Garrett Smith

RobG said:
I think it's a crock. The issue is that during load, if no option has
the selected attribute, the select's selectedIndex property will be
set to 0 but no option's selected property is set to true. That can
also be characterised as a problem with selectedIndex, as it should be
-1 at that moment.

Right. the selected index could be -1 at that point, and would be
perfectly compliant to the definition of - selected - in DOM 2 html,
which states:

| selectedIndex of type long
| The ordinal index of the selected option, starting from 0. The value
| -1 is returned if no element is selected. If multiple options are
| selected, the index of the first selected option is returned.

A SELECT's selectedIndex property could be 1, by even if no OPTION has
selected attribute.

<select>
<option disabled>not selected</option>
<option>selected by default</option>
</select>

However, you will notice that Safari selects the first OPTION. The most
reliable solution is:-
If an option is given the selected attribute, it all works as
expected.

Yes, that solves the problem.

<body>
<select><option selected>test</option></select>
<script>
var opt = document.getElementsByTagName("option")[0];
alert( opt.selected );
</script>
</body>

Safari 4:
true
If the load event hasn't occurred yet, and the user *has* selected a
value, is the value reported correctly? I suspect it will be.

Yes.

Add selected attribute. Problem solved.
If the user hasn't selected an option and the form is submitted before
load has occurred, what will be the value of the select? Should this
be fixed by script, HTML or server code? Should it be fixed at all? Is
this only an issue for serialising forms prior to load? If so, should
it be dealt with there, and only if load hasn't occurred?

Anyhow, it is resolved by following advice in the HTML specification
from a decade ago:

"Since user agent behavior differs, authors should ensure that each
[select] includes a default pre-selected OPTION."

<URL: http://www.w3.org/TR/html4/interact/forms.html#h-17.6.1 >

I'd just document it, job done.

There you go. Already documented in HTML 4.01.
Which points to an inability to clearly identify the issue in the
first place.

Yep.

And that reflects on the attr() method in general - there is no clear
idea of what it should do, other than some vague idea of John Resig's
that it should do "what the developer expects". Perhaps he knows the
mind of everyone using jQuery.

Right.

It seems to me he wants attr() to do what *he* thinks the developer
expects, despite being told by developers that it doesn't do what
*they* expect. The whole issue would go away if attr() reported
attribute values, a prop() method reported property values and css()
reported (say) computed CSS values.

Computed CSS values can't happen. IE.
Then users need only learn the difference between attributes and
properties once. Heaven forbid that they should understand the
technology they're working with.
What would a developer who understands the technology want jQuery for?
 
M

Matt Kruse

You probably tried reading the selectedIndex, and then found that
worked, then tried to read the option.selected, and then found that
worked, and then figured that by simply accessing selectedIndex, the
selected property was achieved. Did I get that right?

Me personally? No. I didn't come up with this. I asked about the
rationale for that segment of code because it never made sense to me.
Then you went to propose the workaround as a solution. That's a hack.

That hack was there, I just suggested a way to improve the comment and
functionality of the hack.
The problem was identified as: The default OPTION in a non-rendered
SELECT is false, when the option will be selected by default.
That is not a bug.

I agree, but it is behavior that is different than other tested
browsers. In the case of jQuery, it is attempting to "normalize"
browsers, and since they found an exception probably in some rare case
that one user had, they tried to fix it. Personally, I don't feel this
section of code deserves to be in there at all.
function updateOptionSelected(elem) {
   // If we're getting a false value, it may be that the option
   // will be selected when fully rendered, but has not happened yet.
   if(elem.selected === false) {
     var selectedOption = elem.parentNode.options[s.selectedIndex];
     selectedOption.selected = true;
   }
}
Doesn't that make teh loop a lot clearer?

Certainly, it looks like a better approach. But it would need to be
cleaned up to consider the possibility that an <option> might in an
<optgroup>.

Perhaps something like this:

if (prop=="selected") {
return getOptionSelected(elem);
}

function getOptionSelected(el) {
var s = document.createElement("select");
s.add(new Option("a"));
if (s.options[0].selected) {
return (getOptionSelected = function(opt) { return opt.selected; })
(el);
}
// If we're getting a false value, it may be that the option
// will be selected when fully rendered, but has not happened yet.
return (getOptionSelected=function(opt) {
if(opt.selected === false) {
var s = (opt.parentNode.tagName=="SELECT")?
opt.parentNode:eek:pt.parentNode.parentNode;
if (s.type=="select-one" && s.selectedIndex>=0) {
s.options[s.selectedIndex].selected=true;
}
}
return opt.selected;
})(el);
}
Your proposed workaround relies on an even bigger non-standard quirk. It
is possible that bigger quirk (your workaround) will not be present in
Safari 5 and the smaller quirk will remain. If and when that happens,
you're back to trying to figure out the problem.

Possible. Either way, the above solution seems more robust if one were
really interested in dealing with this quirk.

And just to be clear - this is not "my proposed workaround". I was
exploring the problem to understand why those lines have existed in
jQuery for so long. Out of curiosity.

Matt Kruse
 
G

Garrett Smith

Matt said:
Me personally? No. I didn't come up with this. I asked about the
rationale for that segment of code because it never made sense to me.


That hack was there, I just suggested a way to improve the comment and
functionality of the hack.

I see.
I agree, but it is behavior that is different than other tested
browsers. In the case of jQuery, it is attempting to "normalize"
browsers, and since they found an exception probably in some rare case
that one user had, they tried to fix it. Personally, I don't feel this
section of code deserves to be in there at all.

Me neither. Adding the selected attribute fixes the problem and is a
recommended practice in HTML 4.01.
function updateOptionSelected(elem) {
// If we're getting a false value, it may be that the option
// will be selected when fully rendered, but has not happened yet.
if(elem.selected === false) {
var selectedOption = elem.parentNode.options[s.selectedIndex];
selectedOption.selected = true;
}
}
Doesn't that make teh loop a lot clearer?

Certainly, it looks like a better approach. But it would need to be
cleaned up to consider the possibility that an <option> might in an
<optgroup>.

Yeah, it should avoid error where `selectedOption` was undefined, such
as where s.selectedIndex is -1.
Perhaps something like this:

if (prop=="selected") {
return getOptionSelected(elem);
}
Sure.

function getOptionSelected(el) {
var s = document.createElement("select");
s.add(new Option("a"));
if (s.options[0].selected) {
return (getOptionSelected = function(opt) { return opt.selected; })
(el);
}

s = null;
// If we're getting a false value, it may be that the option
// will be selected when fully rendered, but has not happened yet.
return (getOptionSelected=function(opt) {
if(opt.selected === false) {
var s = (opt.parentNode.tagName=="SELECT")?
opt.parentNode:eek:pt.parentNode.parentNode;

var s = findAncestorWithTag(opt, "SELECT");
if (s.type=="select-one" && s.selectedIndex>=0) {

Why check s.type?
s.options[s.selectedIndex].selected=true;
}
}
return opt.selected;
})(el);
}
Your proposed workaround relies on an even bigger non-standard quirk. It
is possible that bigger quirk (your workaround) will not be present in
Safari 5 and the smaller quirk will remain. If and when that happens,
you're back to trying to figure out the problem.

Possible. Either way, the above solution seems more robust if one were
really interested in dealing with this quirk.

Yes.

And just to be clear - this is not "my proposed workaround". I was
exploring the problem to understand why those lines have existed in
jQuery for so long. Out of curiosity.

Got it.
 
R

rf

Hans-Georg Michna said:
Shorter, nicer-looking, easier-to-understand code perhaps?

I must admit that I like jQuery's functional notation very much.
I wish I had a version of jQuery that also worked perfectly
under the hood.

So why don't you write your own scripting language?
Haven't had any problems with jQuery yet, but that may be
because I didn't do very deep things with it and didn't test
with many older browsers.

Or many newer ones.
 
M

Matt Kruse

function getOptionSelected(el) {
  var s = document.createElement("select");
  s.add(new Option("a"));
  if (s.options[0].selected) {
    return (getOptionSelected = function(opt) { return opt.selected; })
(el);
  }
s = null;

Good eye.
Why check s.type?

I was initially being explicit about only doing this for single-
selects, but with the selectedIndex check, it is unnecessary since
selectedIndex==-1 for multiple selects.

I'm going to summarize the points discussed here and the code above to
the jquery-dev list, although I doubt they will be receptive to such a
change when the two-line code they have now "works good enough".

Matt Kruse
 
D

David Mark

I told you where to find something similar. It's even got a $ if you
really want that. ;)
Have to make a living. :)-)

With jQuery? That cycle is at the end.
OK, I haven't done any very thorough tests.

No question. So what makes you think it is free of problems? It
doesn't get much more shallow than reading an attribute or property
value. ;)
The critical point here is that many people feel a need for
something like jQuery, and not all of them understand all the
implications.

Most, if not all, as once you uncover the basic ramifications, you
stop using it (and all things like it).
 
J

John G Harris

Haven't had any problems with jQuery yet, but that may be
because I didn't do very deep things with it and didn't test
with many older browsers.

I go to the Dilbert home page every day. Sometimes it stops with just
the banner ad showing and reports a javascript error. Not Good. Is it a
coincidence that they're using JQuery and I'm using IE8 ?

John
 
D

David Mark

On Mon, 21 Dec 2009 at 10:59:50, in comp.lang.javascript, Hans-Georg

Michna wrote:



I go to the Dilbert home page every day. Sometimes it stops with just
the banner ad showing and reports a javascript error. Not Good. Is it a
coincidence that they're using JQuery and I'm using IE8 ?

Sounds suspicious. :) What happens if you click the compatibility
mode button (or perhaps this page does it for you?) I typically find
sites using jQuery that appear to work in IE8 proper, but blow up in
compatibility mode. That tells me they were "tested" in IE8, but not
IE < 8. Not a promising sign at all. ;)
 
G

Garrett Smith

David said:
On Mon, 21 Dec 2009 at 10:59:50, in comp.lang.javascript, Hans-Georg

Michna wrote:

<snip>
[...]

Sounds suspicious. :) What happens if you click the compatibility
mode button (or perhaps this page does it for you?) I typically find
sites using jQuery that appear to work in IE8 proper, but blow up in
compatibility mode. That tells me they were "tested" in IE8, but not
IE < 8. Not a promising sign at all. ;)

That compatibility button seems like a big mistake from the start.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top