Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.javascript > #23362
| From | Cezary Tomczyk <cezary.tomczyk@gmail.com> |
|---|---|
| Newsgroups | comp.lang.javascript |
| Subject | Re: Get inner text of HMTL element |
| Date | 2014-02-28 13:44 +0100 |
| Organization | A noiseless patient Spider |
| Message-ID | <leq0b6$bmc$5@dont-email.me> (permalink) |
| References | (9 earlier) <2932926.BXQvjz4BgK@PointedEars.de> <leg8e4$q6d$1@dont-email.me> <1651063.34UYyxniXp@PointedEars.de> <leo7to$edn$1@dont-email.me> <107217521.8C7GdJjoVz@PointedEars.de> |
Thomas 'PointedEars' Lahn wrote:
> Cezary Tomczyk wrote:
>
>> Thomas 'PointedEars' Lahn wrote:
>>> Cezary Tomczyk wrote:
>> [...]
>>>> You probably referring to
>>>> http://robertnyman.com/2005/12/21/what-is-typeof-unknown/#comment-8001,
>>>> right?
>>>
>>> I would not refer to such nonsense.
>>
>> Just one sentence doesn't explain what is behind "nonsense".
>
> What do you mean by that?
I mean that saying like "I would not refer to such nonsense." doesn't
bring any value. Instead of that I would expect: "Specified comment is
"nonsense" because of ... [and here are arguments]".
>>>>> last branch. Anyhow, there is no guarantee that if some arbitrary
>>>>> element object has a “firstChild” or “nextSibling” property, the
>>>>> *target* element object also has it.
>>>>>
>>>>> Do you see now why it is a bad idea to infer from one property to
>>>>> another, even if the property names are the same and only the objects
>>>>> differ?
>>>>
>>>> Then what options do I have?
>>>>
>>>> 1. Check, if firstChild and nextSibling is available on
>>>> document.documentElement
>>>> or
>>>> 2. Check, if every element support firstChild and nextSibling?
>>>
>>> 3. Check if the *target* element supports “firstChild” and “nextSibling”.
>>
>> Ok
>>
>>> 4. Forget the whole idea.
>>
>> Except point no. 3.
>
> What do you mean by that?
"Forget the whole idea." - I thought that point no. 3 is the right thing
to do and "whole idea" is not applicable for that point.
>>>>>>>> get_inner_text = function(node) {
>>>>>>>> var txt = '';
>>>>>>>>
>>>>>>>> node = node.firstChild;
>>>>>>>> while (node) {
>>>>>>>> if (node.nodeType === 3 || node.nodeType === 4) {
>>>>>>>
>>>>>>> I avoid strict comparison against property values of host objects.
>>>>>>> There are too many unknowns.
>>>>>>
>>>>>> I've never had problems with that, but I am not claim that there is no
>>>>>> problems. However, if you have a time then provide maybe some valuable
>>>>>> source where I can read about above problems. Otherwise, skip it, in
>>>>>> case of having no time.
>>>>>
>>>>> You are still operating in “Show me where it fails” mode in place of
>>>>> logic.
>>>>
>>>> But "There are too many unknowns." doesn't teach me why.
>>>
>>> There is no indication that an interface’s *attribute* MUST be
>>> implemented as a host object’s property using a *native* type or the
>>> *specified* type. However, if it is to be useful, it must be implemented
>>> so that it allows conversion to and from a native type.
>>
>> Hm, I am lost at that point.
>
> What did you not understand?
I had a bit of homework and explore the knowledge. So, here what I
understood now: "interface’s *attribute*" represent
https://developer.mozilla.org/en-US/docs/Web/API/Attr. However, looks
like "nodeType" property, at least in Gecko implementation, is
deprecated (I see it in section "Deprecated properties and methods").
So, I should use
https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode to
check if property exists and then decide to use its value? Or do
something else?
>> [...]
>>>>> No, same problem: The feature test does not happen on the target object
>>>>> because that object is not reliably accessible yet (if it even exists).
>>>>
>>>> So, the object itself must checked as well. It is in your above code,
>>>> right?
>>>
>>> You can and should skip the first *bogus* test, and do *only* the
>>> *reliable* test on the target object. This comes at a price, though: if
>>> you cannot recognize the object (for example, through mapping), you will
>>> be forced to do the same test for each object when it is accessed. AISB:
>>> Slower, but not as error-prone as your/DM’s “one-size-fits-all”
>>> initialization or whatever you/he call(s) it instead.
>>
>> How reliable test on the target object may look in my case? Asking to
>> understand more deeply.
>
> In your case, AFAICS the target object is an arbitrary element object and,
> because of recursion, each of its descendant node objects. So you will have
> to test each of those objects at least once. (Of course, if “textContent”
> is supported on the element object of your initial serialization call, you
> can return its value and are done. No iteration and recursion necessary
> then.)
Is then sufficient to check property only once on the root element of
the document? Just what you wrote in previous message(s).
if (typeof document.documentElement != "undefined"
&& typeof document.documentElement.textContent == "string")
{[...]
Of course, then I need to assume that other elements support textContent
as well as Element
(https://developer.mozilla.org/en-US/docs/DOM/element) that is the root
element of the document.
> You could assume that in a consistent DOM implementation if the node type
> and/or the element type were the same as before, they would support the same
> properties, and you could skip the feature test based on previous knowledge.
> Also, if an element had an ID, you could store feature test results by ID.
> But there is no guarantee that this works (it certainly does not need to
> work if the document is modified between calls). And it requires *more*
> tests at runtime (you need to test more properties than before), a *larger*
> effective scope chain or argument list (a recursively called function has no
> access to the local context of its caller) and/or *more* memory (the
> information for the lookup needs to be stored). So you better forget that
> idea of “optimization”.
Ok, I've already forgot about above optimization. :-)
--
Cezary Tomczyk
http://www.ctomczyk.pl/
If anyone can suggest me some good NNTP server other than
news.eternal-september.org then it would be nice. Thanks.
Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-22 18:21 +0100
Re: Get inner text of HMTL element Martin Honnen <mahotrash@yahoo.de> - 2014-02-22 19:31 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-22 20:51 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-22 21:11 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-22 21:37 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-22 22:05 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-22 23:38 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-23 10:43 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-23 14:50 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-23 15:48 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-24 21:01 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-24 22:34 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-27 21:41 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-27 22:32 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-28 13:44 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-28 16:54 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-03-04 20:51 +0100
Re: Get inner text of HMTL element ompalompasales2@gmail.com - 2014-03-04 12:59 -0800
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-22 20:59 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-22 22:23 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-22 23:32 +0100
Re: Get inner text of HMTL element Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-02-22 21:27 -0300
Re: Get inner text of HMTL element "se" <se@no-one.here> - 2014-02-23 05:35 +0100
Re: Get inner text of HMTL element Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-02-23 15:29 -0300
Re: Get inner text of HMTL element "se" <se@no-one.here> - 2014-02-23 21:01 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-23 20:02 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-23 21:55 +0100
Re: Get inner text of HMTL element Cezary Tomczyk <cezary.tomczyk@gmail.com> - 2014-02-24 08:37 +0100
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-24 12:30 +0100
Re: Get inner text of HMTL element Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-02-24 15:09 -0300
Re: Get inner text of HMTL element Christoph Michael Becker <cmbecker69@arcor.de> - 2014-02-24 19:43 +0100
Re: Get inner text of HMTL element Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-02-24 18:12 -0300
Re: Get inner text of HMTL element Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2014-02-24 22:51 +0100
Re: Get inner text of HMTL element Dr J R Stockton <reply1400@merlyn.demon.co.uk.invalid> - 2014-02-25 19:49 +0000
Re: Get inner text of HMTL element Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-02-26 05:20 -0300
Re: Get inner text of HMTL element "se" <se@no-one.here> - 2014-02-26 17:10 +0100
OT - Re: Get inner text of HMTL element Joao Rodrigues <groups_jr-1@yahoo.com.br> - 2014-02-26 15:48 -0300
Re: OT - Re: Get inner text of HMTL element "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-02-26 22:43 +0100
Re: OT - Re: Get inner text of HMTL element Dr J R Stockton <reply1400@merlyn.demon.co.uk.invalid> - 2014-02-27 15:00 +0000
Re: OT - Re: Get inner text of HMTL element "Evertjan." <exxjxw.hannivoort@inter.nl.net> - 2014-02-28 10:50 +0100
Re: OT - Re: Get inner text of HMTL element "se" <se@no-one.here> - 2014-02-27 10:57 +0100
Re: Get inner text of HMTL element Dr J R Stockton <reply1400@merlyn.demon.co.uk.invalid> - 2014-02-27 15:46 +0000
csiph-web