NAME
PApp::ECMAScript - make javascript horrors less horrible
SYNOPSIS
use PApp::ECMAScript;
DESCRIPTION
- $obj = new PApp::ECMAScript
-
Create a new object. Better use the
init
function. - init PApp::ECMAScript
-
Create a new global PApp::ECMAScript object, storing it in the (exported) variable
$js
, which should be shared between all modules for caching purposes. Consequently, this function should be called once in the request callback or in the global stylesheet. - unique
-
Return a unique identifier. This is useful when generating function names or other identifiers.
- escape_string_sq $string [EXPORTED]
- escape_string_dq $string [EXPORTED]
-
Escape the given string as required and return it (
escape_string_sq
will use single quotes to delimit the string,escape_string_dq
will use double quotes). Remember that many browsers do not like quoting, so use the right function to minimize impact. - $js->add_headercode($code)
-
Add the given code fragment to the HTML/HEAD/SCRIPT section.
- $js->need_headercode($code)
-
Mark the given code fragment as to be added to the html head section. The same fragment will only be added once.
- $js->headercode
-
Return the code to be put in the head section.
- $js->add_onevent("event", "code")
- $js->need_onevent("event", "code")
-
Add code that is run when the given event occurs. Event should be something like "window.onclick" or "document.onload".
- $code = $js->is_ns
- $code = $js->is_ns4
- $code = $js->is_ie
- $code = $js->is_ie4
- $code = $js->is_ie5
- $code = $js->is_konquerer
-
Return javascript code that checks wether the code is running under netscape, netscape 4 (or higher), ie, ie4 (or higher) or ie5 (or higher), respectively.
- $js->can_css
-
Return wether the browser supports CSS.
- $js->visibility_visible
-
Return the string that should be used to set the visibility attribute to "hidden" or "visible".
- $js->event
-
Return the name of the event object (either window.event or event).
- $js->get_style_object($name)
-
Return code that finds the style object with the given name and returns it.
- $js->event_page_x
- $js->event_page_y
-
Return the window x or y coordinate from the current event relative to the current page.
- $js->window_height
- $js->window_width
-
Return the (approximate) height and width of the scrollable area, i.e. the inner width and height of the window.
The PApp::ECMAScript::Layer Class
This class manages floating cxx objects (i.e. objects with style invisible that can be shown, hidden, moved etc... using javascript).
- $layer = new PApp::ECMAScript::Layer arg => val, ...
-
Create a new layer object (does not output anything).
js => the javascript object to use (default $PApp::ECMAScript::js) id => the name (html id), default autogenerated content => the content of the layer/div element element => the element used for the layer
- $layer->id([newid])
-
Return the current object id (optionally setting it).
- $layer->content([newcontent])
-
Return the current object content (optionally setting it).
- $layer->code
-
Return the javascript code used to create the (initially hidden) layer. The best place for this is the top of the document, just below the BODY tag, but that's not a requirement for working browsers ;)
Please note that all javascript code returned is not quoted, which is not a problem when outputting it directly since browsers actually EXPECT misquoted input, but it is a problem when you output strict html (xml) or want to feed this into an XSLT stylesheet, in which case you need to
escape_html()
the code first and usedisable-output-escaping
in your stylesheet to deliberatly create broken HTML on output. - $layer->style_object
-
Return an expression that evaluates to the style object used by the code.
- $layer->showxy($x,$y)
-
Return code to display the layer object at position ($x,$y) (which should be valid javascript expressions).
- $layer->show_relmouse($x,$y)
-
Same as
howxy
, but use the current mouse position as origin. - $layer->show
-
Return code to display the layer object.
- $layer->hide
-
Return code to hide the layer object.
SEE ALSO
PApp.
AUTHOR
Marc Lehmann <schmorp@schmorp.de>
http://home.schmorp.de/