Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.javascript > #23355

Re: Get inner text of HMTL element

Message-ID <107217521.8C7GdJjoVz@PointedEars.de> (permalink)
From Thomas 'PointedEars' Lahn <PointedEars@web.de>
Organization PointedEars Software (PES)
Date 2014-02-27 22:32 +0100
Subject Re: Get inner text of HMTL element
Newsgroups comp.lang.javascript
References (8 earlier) <lecuah$mib$9@dont-email.me> <2932926.BXQvjz4BgK@PointedEars.de> <leg8e4$q6d$1@dont-email.me> <1651063.34UYyxniXp@PointedEars.de> <leo7to$edn$1@dont-email.me>

Show all headers | View raw


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?
 
>>>> 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?

>>>>>>>         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?
 
> [...]
>>>> 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.)

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”.
 
-- 
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.

Back to comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


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