Revision history for WWW::Scripter

0.019  29 August, 2010
       Fix a dependency problem

0.018  22 August, 2010
       Loading a page that had a <meta>  tag with no http-equiv attri-
       bute  (e.g.,  <meta charset=utf-7>)  would cause uninitialized
       warnings in perl 5.12.0 and higher if  a  script  handler  was
       present. This has been fixed.

0.017  25 July, 2010
       Fixed an internal bug where  Hash::Util::FieldHash::Compat  is
       used without being loaded first.  It  just  happened  to  work
       because HTML::DOM 0.041 and earlier load it.

0.016  18 July, 2010
     • If a script handler’s event2sub method leaves something in  $@,
       it is now picked up  and  handed  off  to  the  ->warn  method.
     • check_timers  used to ignore some code ref timers if the  Java-
       Script plugin was not loaded.  It is only supposed  to  ignore
       strings of code. This has been fixed.

0.015  20 June, 2010
       location->assign has been added.

0.014  13 June, 2010
     • navigator->platform has been added.
     • Timers now use Time::HiRes,  instead of rounding to  the  near-
       est second.
     • New wait_for_timers method
     • A new navigator->taintEnabled method that always returns false
       has been added,  to appease MooTools 1.2,  which makes unrelia-
       ble assumptions based on the absence of this method.

0.013  2 May, 2010
       navigator->javaEnabled has been added. It always returns false.

0.012  25 April, 2010
       setInterval and clearInterval have been added.

0.011  18 April, 2010
     • Support for multiple ‘windows’:
       • New WWW::Scripter::WindowGroup class
       • New window_group, blur, close and focus methods
       • The open method now opens new windows,  returning the window
         it opened.
     • Support for link targets and <base target> tags, including the
       new find_target and name methods
     • navigator->appCodeName
     • follow_link and click now return the response object,  instead
       of returning nothing. (Thanks to  Hannes  Beinert  for  report-
       ing this.)
     • follow_link  no longer dies when autocheck is on  (unless it’s
       supposed to).
     • The WWW::Mechanize::Link and ::Image  objects returned by vari-
       ous methods now update automatically if  the  underlying  HTML
       element changes.
     • The history object’s  go  method now  reloads  the  page  with
       zeroes that are boolean-true (like the strings "00" and "0e0"),
       instead of just with false zeroes.
     • The title method now sets the page title if passed an argument.
     • Script handlers can now use the Mech interface to access forms
       during parsing.
     • Fetching a page no longer interferes with a tied $_.

0.010  15 November, 2009
     • New dom_enabled method that allows HTML parsing to be switched
       off.
     • Scripts served with a content type of text/html  are no longer
       parsed into inaccessible DOM trees. This used to cause warning
       messages if a JS file  when  read  as  HTML  appeared  to  con-
       tain scripts.
     • The document method now returns undef  if the page is not HTML,
       instead of returning the previous page’s document.

0.009  25 October, 2009
     • count_timers and check_timers now know about timers in
       (i)frames.
     • Adding an inline script to  the  DOM  dynamically  (e.g.,  via
       appendChild) no longer produces a warning.
     • Empty script elements with no src attribute  no  longer  cause
       errors.
     • The base URL for an about:blank page in a frame is  now  taken
       from the parent window.
     • check_timers  now catches script errors and  turns  them  into
       warnings. It used to die with code refs (introduced in the pre-
       vious version) and silence them with strings of code.
     • Location objects are no longer shared between frames  (causing
       navigation in a frame via the location object to navigate  the
       top window instead).
     • Event handlers with  call_with  methods no longer get passed a
       strange WWW::Scripter::EventTarget object.  (These objects had
       existed since version 0.005 and  were  *supposed*  to  be  for
       internal use,  but leaked out.  They were for keeping a  diffe-
       rent set of window event handlers for each page.)

0.008  19 October, 2009
     • The base method now uses HTML::DOM’s base method,  in order to
       work with multiple <base> tags and dynamic changes to the base.
     • We now include scroll, scrollBy and scrollTo methods,  in case
       a script tries to call them.  They don’t actually do  anything.
     • Frames with no  src  element or an empty src element  used  to
       load the parent page,  resulting in infinite  recursion.  This
       has been fixed.
     • setTimeout  now works with a code ref as  the  first  argument.
     • count_timers no longer clobbers the $_ variable.

0.007  9 October, 2009
       The  clone  method  now  copies  class_info  over.  class_info
       no longer dies when  called  on  a  clone  with  no  arguments
       in list or scalar context.

0.006  30 September, 2009
       WWW::Scripter now overrides  WWW::Mechanize’s submit method to
       trigger  onsubmit.  (Thanks to  Steven  Nikkel  for  stumbling
       across this.)

0.005  17 September, 2009
     • max_docs and max_history have been added. Mech’s stack_depth
       is  now  honoured.  (max_docs  is  an  off-by-one  alias  to
       stack_depth.)
     • When no  browsing  has  happened,  the  current  page  is  now
       about:blank.  (It used to be an uninitialised state  in  which
       some methods, such as uri, would just die.)
     • URL fragments are now supported.  They are now  stripped  from
       URLs when the actual request is made (they used to be sent  to
       the server).  Fetching a URL that differs from the current one
       only by its fragment does not reload the page,  but does add a
       history entry.  You can now use the location object to get the
       URL with its fragment.  Use the uri method to get the real URL.
     • location->replace now works correctly.  (It used to be a quick-
       and-dirty ‘back’ followed by ‘get’.)
     • location->reload  now actually reloads the  page.  In  version
       0.002,  it would simply refresh the  page  from  the  response
       object.  Version  0.003  broke  that  by  making  it  a  no-op.
     • Support for onunload handlers
     • onload handlers are now called on the window, not the body ele-
       ment, with the document as the event target.
     • WWW::Scripter  no longer inherits from  HTML::DOM::EventTarget,
       but  it  still  provides  the  interface,  so  it  now  has  a
       DOES method.
     • Setting the value of the location  object’s  hash  and  search
       attributes now works.  It used to be a no-op unless it was set
       to the old value.
     • The host, hostname, pathname, port, protocol, search and  href
       methods of the  location  object  now  return  the  old  value
       upon setting.
     • The host and hostname methods of the location object have been
       corrected  such  that  host  now  returns  the  port  as  well,
       hostname  no longer returns the port,  setting  hostname  to a
       string containing a port no longer sets the port  and  setting
       host with a port number now works.  (In other words, they were
       switched round and were a bit buggy, too.)
     • I forgot to add the  CSS  interface  to  the  class_info.  Now
       it’s there.

0.004  16 August, 2009
       The  frames  method no longer dies when the page is  not  HTML.

0.003  15 August, 2009
     • When you go back  (or forward)  to a page,  the same  document
       object is  used  once  more.  It  used  to  be  parsed  afresh.
     • Detecting the charset now works with LWP 5.827 and later.

0.002  9 April, 2009
       One bug fix: The credentials method now works.

0.001  5 April, 2009
       First release. This consists of code copied and pasted from
       parts of WWW::Mechanize::Plugin::DOM and the experimental
       plugin version of WWW::Mechanize at
       <http://www-mechanize.googlecode.com/svn/wm/branches/plugins/>,
       plus some new code to tape it all together.