Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!newsfeed.straub-nv.de!noris.net!newsfeed.arcor.de!newsspool1.arcor-online.net!news.arcor.de.POSTED!not-for-mail Content-Type: text/plain; charset="UTF-8" Message-ID: <1398495.AFRqVoOGUt@PointedEars.de> From: Thomas 'PointedEars' Lahn Reply-To: Thomas 'PointedEars' Lahn Organization: PointedEars Software (PES) Date: Wed, 04 Apr 2012 22:28:51 +0200 User-Agent: KNode/4.4.11 Content-Transfer-Encoding: 8Bit Subject: Re: Finding the V offset of an element Newsgroups: comp.lang.javascript References: Followup-To: comp.lang.javascript MIME-Version: 1.0 Lines: 93 NNTP-Posting-Date: 04 Apr 2012 22:28:51 CEST NNTP-Posting-Host: 951d4c26.newsspool1.arcor-online.net X-Trace: DXC=kERYP8LMf]`PXlQ;h]GTMdic==]BZ:afn4Fo<]lROoRa<`=YMgDjhgb:lDn3Y]T[_eDZm8W4\YJNlJ`:FmdeL>K`6JDa4d]ka`eSGeaDLMh6Ci X-Complaints-To: usenet-abuse@arcor.de Xref: csiph.com comp.lang.javascript:13219 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 (404-comp.)