Richard Cornford wrote:
> Hans-Georg Michna wrote:
>> On Tue, 3 Apr 2012 22:18:28 -0430, Leonardo Azpurua wrote:
>>> s.indexOf("TableRow") < 0 &&
>>> s.indexOf("Form") < 0) n += elt.offsetTop;
>>
>> Just a little remark on the sidelines: IE8 and older cannot do
>> s.indexOf(...) .
>>
>> You may want to use something like this instead:
>>
>> function indexOf(s, a) {
>> var index = -1;
>> for (var i = 0; i < a.length; i++) {
>> if (a[i] === s) {
>> index = i;
>> break;
>> }
>> }
>> return index;
>>
>> }
>
> Array.prototype.indexOf - is not built-in prior to ES5 but -
> String.prototype.indexOf - has been around for longer than I have been
> using javascript, […]
There is no "javascript", there are ECMAScript implementations.
String.protototype.indexOf(string) has been introduced with JavaScript 1.0,
JScript 1.0, and ECMAScript Ed. 1 and is probably supported by all
implementations that are based on the latter and its successors (tests are
pending but no surprises are expected there).
Array.prototype.indexOf(…) is supported since JScript 9.0 in Internet
Explorer 9.0.8112.16421 for Windows 7 Pro 32-bit SP1 in Standards Mode. It
passed all test cases in (Mozilla) JavaScript 1.6 in Firefox 1.5.0.12 for
Windows, and since JavaScript 1.8 (Firefox 3.0.19 for Windows), but
JavaScript 1.7 in Firefox 2.0 for Windows failed test case #10.
It is supported in Google V8 JavaScript since at least version 3.7.12.12 in
Chrome 17.0.963.78 (Developer Build 125577 Linux), Apple JavaScriptCore
since at least version 531.22.7 in Safari for Windows 4.0.5 (531.22.7),
Opera ECMAScript 9.52 in Opera 9.52.10108 for Windows, and KDE JavaScript
since at least version 4.6.5 in Konqueror 4.6.5. Surprisingly, Opera
ECMAScript 8.0 in Opera 8.0.7561 for Windows failed all test cases except
#12.
As such, Array.prototype.indexOf(…) is a feature that cannot be considered
safe for use for the time being, but it is easily emulated.
The test cases were:
(1) jsx.object.isNativeMethod(jsx.global, "Array", "prototype", "indexOf")
(2) var i = new Array().indexOf("foo");
typeof i == "number" && i == -1
(3) var i = new Array("2", 2).indexOf(2);
typeof i == "number" && i == 1
(4) var i = new Array("foo", "foo").indexOf("foo", 1);
typeof i == "number" && i == 1
(5) var i = new Array("foo", "foo").indexOf("foo", "1");
typeof i == "number" && i == 1
(6) var i = new Array("foo").indexOf("bar")
typeof i == "number" && i == -1
(7) var i = new Array("foo", "bar").indexOf("foo", 1);
typeof i == "number" && i == -1
(8) var i = new Array("foo", "bar").indexOf("foo", "1");
typeof i == "number" && i == -1
(9) var i = new Array("foo", "foo").indexOf("foo", -2);
typeof i == "number" && i == 0
(10) var i = new Array("foo").indexOf("foo", 1);
typeof i == "number" && i == -1
(11) var len = Array.prototype.indexOf.length;
typeof len == "number" && len == 1
(12) var o = new Object();
o.indexOf = Array.prototype.indexOf;
o[0] = 42;
o[1] = "42";
o[2] = 42;
o.length = 3;
o.indexOf(42) == 0
HTH
PointedEars
--
Use any version of Microsoft Frontpage to create your site.
(This won't prevent people from viewing your source, but no one
will want to steal it.)
-- from <
http://www.vortex-webdesign.com/help/hidesource.htm> (404-comp.)