
232
EXTENDING DREAMWEAVER CS4
Floating panels
function selectionChanged(){
/* get the selected node */
var theDOM = dw.getDocumentDOM();
var theNode = theDOM.getSelectedNode();
/* check to see if the node is a script marker */
if (theNode.nodeType == Node.ELEMENT_NODE && ¬
theNode.tagName == "SCRIPT"){
document.layers['blanklayer'].visibility = 'hidden';
document.layers['scriptlayer'].visibility = 'visible';}
else{
document.layers['scriptlayer'].visibility = 'hidden';
document.layers['blanklayer'].visibility = 'visible';
}
}
About performance
Declaring the selectionChanged() or documentEdited() function in your custom floating panels can impact
Dreamweaver performance adversely. Consider that the
documentEdited() and selectionChanged() functions are
called after every keystroke and mouse click when Dreamweaver is idle for more than one-tenth of a second. It’s
important to use different scenarios to test your floating panel, using large documents (100 KB or more of HTML)
whenever possible, to test performance impact.
To help avoid performance penalties, use the setTimeout() function. As in the browsers, the setTimeout() function
takes two arguments: the JavaScript to be called and the amount of time in milliseconds to wait before calling it.
The setTimeout() method lets you build pauses into your processing. These pauses let the user continue interacting
with the application. You must build in these pauses explicitly because the screen freezes while scripts process, which
prevents the user from performing further edits. The pauses also prevent you from updating the interface or the
floating panel.
The following example is from a floating panel that displays information about every AP element in the document. It
uses the
setTimeout() method to pause for half a second after processing each AP element.
Commenti su questo manuale