| HTML-DOM documentation | Contained in the HTML-DOM distribution. |
HTML::DOM::View - A Perl class for representing an HTML Document's 'defaultView'
use HTML::DOM;
$doc = HTML::DOM->new;
$view = new MyView;
$doc->defaultView($view);
package MyView;
BEGIN { @ISA = 'HTML::DOM::View'; }
use HTML::DOM::View;
sub new {
my $self = bless {}, shift; # doesn't have to be a hash
my $doc = shift;
$self->document($doc);
return $self
}
# ...
This class is used for an HTML::DOM object's 'default view.' It implements the AbstractView DOM interface.
It is an inside-out class, so you can subclass it without being constrained to any particular object structure.
Returns the document associated with the view.
You may pass an argument to set it, in which case the old value is returned. This attribute holds a weak reference to the object.
Returns the computed style as a CSS::DOM::Style object. $pseudo_elem
is the name of the pseudo-element, with or without the initial colons
(1 or 2).
These are called by getComputedStyle and are expected to return the user
agent and user style sheets, respectively, as CSS::DOM objects.
| HTML-DOM documentation | Contained in the HTML-DOM distribution. |
package HTML::DOM::View; use warnings; use strict; use Scalar::Util qw'weaken'; BEGIN { if(eval { require Hash::Util::FieldHash }) { import Hash::Util::FieldHash qw < fieldhash >; } else { require Tie::RefHash::Weak; VERSION Tie::RefHash::Weak 0.08; # fieldhash import Tie::RefHash::Weak qw < fieldhash >; } } fieldhash my %doc; our $VERSION = '0.048'; # -------- DOM ATTRIBUTES -------- # sub document { my $old = $doc{my $self = shift}; $doc{$self} = shift if @_; defined $old ? $old :(); } sub getComputedStyle { my($view, $elem, $pseudo) = @_; my($ua,$u) = map eval{$view->${\"u$_\_style_sheet"}}, 'a','ser'; my $doc = $view->document; require CSS::DOM; CSS::DOM->VERSION(.06); return CSS::DOM'compute_style( #medium => ... #height => $view->innerHeight; #width => $view->innerWidth; #ppi => ... ua_sheet => $ua, user_sheet => $u , defined $doc ? (author_sheets => scalar $doc->styleSheets ) : (), element => $elem, pseudo => $pseudo, ); } 1 __END__