[jawsscripts] Re: The GetListOfFormFields function annd Delimiters

  • From: "Donald Marang" <donald.marang@xxxxxxxxx>
  • To: <jawsscripts@xxxxxxxxxxxxx>
  • Date: Wed, 23 Sep 2009 03:13:36 -0400

Thanks Brian,

Hope you are feeling better!  I hope the surgery was something they were 
fixing and things are better now.  I have had more surgeries than I can 
count.  Many were not intended to 'fix' things.

Does that if a form field is not specified as a particular type, that it is 
a "text" edit field by default?  Is it given a default size and Max length 
as well?  On a similar  note, if the INPUT element is specified as type = 
"image", can it be anything other than a class = "actionbutton" element?  It 
is true on these badly written mobile  pages, but can I generalize that 
statement?

Don Marang


----- Original Message ----- 
From: "Bryan Garaventa" <bgaraventa11@xxxxxxxxxxxxxx>
To: <jawsscripts@xxxxxxxxxxxxx>
Sent: Wednesday, September 23, 2009 2:26 AM
Subject: [jawsscripts] Re: The GetListOfFormFields function annd Delimiters


> Hi, sorry for not getting back sooner, I recently had surgery, so have 
> been
> out of commission.
>
> The short answer is that not using a type attribute within an input 
> element
> is bad coding.
>
> Since you are scripting someone elses page though, and only some of the 
> edit
> fields don't contain a type attribute, then you could check for the
> following using the o object as mentioned before...
>
> if o.type == "text" || o.type == "" then
> ; then o is an edit field
> endif
>
> hope this helps.
> Bryan
>
> ----- Original Message ----- 
> From: "Donald Marang" <donald.marang@xxxxxxxxx>
> To: <jawsscripts@xxxxxxxxxxxxx>
> Sent: Friday, September 18, 2009 4:32 PM
> Subject: [jawsscripts] Re: The GetListOfFormFields function annd 
> Delimiters
>
>
>> Thanks Brian,
>>
>> I ended up using your method in a function that gathers all of the
>> information I was looking for at one time.  I now use this loop starting
>> at
>> the last element and working backwards.  While in the loop, I count the
>> buttons, and password / edit fields on the page. It passes back the Edit
>> Field count, the  name of the first edit field, the count of buttons, and
>> returns the object pointer of the first button as the return value.
>>
>> I could not figure out how to identify an Edit field.  The Edit fields
>> sometimes only have a name attribute.  Currently the function only
>> identifies the username and search edit fields by name!  Not a
>> generic,portable solution.  Does anyone know a better way to identify an
>> Edit field? Would there be an attribute that would always be null in a
>> form,
>> but all other control types in the form     would return something?
>>
>> Perhaps I should just pass back the object pointer of the first Edit 
>> field
>> as well and return all information as parameters by reference to make it
>> more generic.  That way it might be more useful in other cases.  As it 
>> is,
>> I
>> call this function 3 times in this application.  I will paste the 
>> function
>> below in case anyone is interested.  I welcome all comments so that I can
>> eventually learn how to script right.
>> Object Function FieldInfo (int ByRef iFields, string ByRef sFirstEdit, 
>> int
>> ByRef iButtons)
>> Var
>> Object dom,
>> Object array,
>> Object o,
>> Int l,
>> Int i,
>> Object oEdit,
>> Object oButton,
>> String sName
>> let dom = IEGetCurrentDocument()
>> let array = dom.getElementsByTagName("input")
>> Let l = array.length
>> let i = l
>> Let iFields = 0
>> Let iButtons = 0
>> SayMessage (OT_DEBUG, "length = " + IntToString (l))
>> while i >= 0
>> let o = array(i)
>> if o.type == "password" then
>>  SayMessage (OT_DEBUG, "password field found!  i = " + IntToString (i))
>>  Let iFields = iFields + 1
>>  Let oEdit = o
>>  Let sFirstEdit = o.name
>> ElIf o.class == "actionbutton" then
>>  SayMessage (OT_DEBUG, "Action button found!  i = " + IntToString (i))
>>  Let sName = o.value
>>  SayMessage (OT_DEBUG, "value = " + sName)
>>  Let iButtons = iButtons + 1
>>  Let oButton = o
>> ElIf o.type == "image" then
>>  SayMessage (OT_DEBUG, "Button Image found!  i = " + IntToString (i))
>>  Let sName = o.value
>>  SayMessage (OT_DEBUG, "value = " + sName)
>>  Let iButtons = iButtons + 1
>>  Let oButton = o
>> ElIf o.name == "userName" then
>>  SayMessage (OT_DEBUG, "Username field found!  i = " + IntToString (i))
>>  Let iFields = iFields + 1
>>  Let oEdit = o
>>  Let sFirstEdit = o.name
>> ElIf o.name == "testInput" then
>>  SayMessage (OT_DEBUG, "Search field found!  i = " + IntToString (i))
>>  Let iFields = iFields + 1
>>  Let oEdit = o
>>  Let sFirstEdit = o.name
>> endif
>> Let i = i - 1
>> EndWhile
>> SayMessage (OT_DEBUG, "Edit field count = " + IntToString (iFields))
>> SayMessage (OT_DEBUG, "First Edit field = " + sFirstEdit)
>> SayMessage (OT_DEBUG, "Button count = " + IntToString (iButtons))
>> Let sName = oButton.value
>> SayMessage (OT_DEBUG, "Button value = " + sName)
>> Return oButton
>> EndFunction
>> Don Marang
>>
>> ----- Original Message ----- 
>> From: "Bryan Garaventa" <bgaraventa11@xxxxxxxxxxxxxx>
>> To: <jawsscripts@xxxxxxxxxxxxx>
>> Sent: Tuesday, September 15, 2009 7:17 PM
>> Subject: [jawsscripts] Re: The GetListOfFormFields function annd
>> Delimiters
>>
>>
>>> You could do something like the following to loop through all relevant
>>> password form fields...
>>>
>>> var object dom, object array, object o, int i
>>> let dom = IEGetCurrentDocument()
>>> let array = dom.getElementsByTagName("input")
>>> let i = 0
>>> while(i < array.length)
>>> let o = array(i)
>>> if o.type == "password" then
>>>
>>> ; here is each instance of a password field within the o object.
>>>
>>> endif
>>> let i = i + 1
>>> endWhile
>>>
>>> ----- Original Message ----- 
>>> From: "Donald Marang" <donald.marang@xxxxxxxxx>
>>> To: <jawsscripts@xxxxxxxxxxxxx>
>>> Sent: Tuesday, September 15, 2009 2:58 PM
>>> Subject: [jawsscripts] The GetListOfFormFields function annd Delimiters
>>>
>>>
>>>>I have been attempting to determine the number of Edit fields on a web
>>>>page.  I have tried to pull that information from the DOM, but I am not
>>>>grasping how to create a collection of edit / password fields.  As a
>>>>backup, I attempted to use the GetListOfFormFields function.  I can use
>>>>this function and then pass the returned string to the
>>>> DlgSelectItemInList  function without any problems.  The
>>>> DlgSelectItemInList  function will display the list showing and
>>>> separating
>>>> the segments properly.  However, the GetListOfFormFields function has a
>>>> delimeter as the first parameter, it does not use the delimeter
>>>> specified!
>>>> Therefore, I can not use StringSegmentCount to determine how many
>>>> segments
>>>> are in the list.  I wrote my own MyStringSegnentCount before I noticed
>>>> that the GetListOfFormFields is at fault instead and does not use the
>>>> delimiter as the documentation suggests.  Does anyone know how the
>>>>
>>>> DlgSelectItemInList  function determines how to split up the segments?
>>>> Is
>>>> there a error in my logic or use in the test example below?  Can anyone
>>>> suggest a robust method to obtain the number of edit / password fields
>>>> visible on a web page?
>>>>
>>>>
>>>> Here is a test function demonstrating the improper use of delimiters
>>>> returned in the GetListOfFormFields:
>>>> Script SegmentTest ()
>>>>
>>>> Var
>>>>
>>>> String sTestString,
>>>>
>>>> String sDelimiter,
>>>>
>>>> Int iSegments
>>>>
>>>> Let sDelimiter = "|"
>>>>
>>>> Let sTestString = "UserID/ email: Edit|password Edit| line 3 \tEdit"
>>>>
>>>> Let sTestString = GetListOfFormFields (sDelimiter , WT_EDIT)
>>>>
>>>> ; InputBox ("Enter new string: ", "Here is the full string!",
>>>> sTestString)
>>>>
>>>> Let iSegments = StringSegmentCount (sTestString, sDelimiter)
>>>>
>>>> SayInteger (iSegments)
>>>>
>>>> EndScript
>>>>
>>>>
>>>> Don Marang
>>>>
>>>>
>>>> __________
>>>> Visit and contribute to The JAWS Script Repository
>>>> http://jawsscripts.com
>>>>
>>>> View the list's information and change your settings at
>>>> //www.freelists.org/list/jawsscripts
>>>>
>>>
>>> __________
>>> Visit and contribute to The JAWS Script Repository 
>>> http://jawsscripts.com
>>>
>>> View the list's information and change your settings at
>>> //www.freelists.org/list/jawsscripts
>>>
>>
>> __________
>> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>>
>> View the list's information and change your settings at
>> //www.freelists.org/list/jawsscripts
>>
>
> __________
> Visit and contribute to The JAWS Script Repository http://jawsscripts.com
>
> View the list's information and change your settings at
> //www.freelists.org/list/jawsscripts
> 

__________ 
Visit and contribute to The JAWS Script Repository http://jawsscripts.com

View the list's information and change your settings at 
//www.freelists.org/list/jawsscripts

Other related posts: