Ejemplo nº2: ordenar una tabla
A continuación aparece un ejemplo de página HTML que tiene un JavaScript incrustado y que requiere tener instalado Authentic Browser (archivo XPI) en el equipo. Recuerde que algunos servidores distinguen entre el uso de mayúsculas y minúsculas, así que si algún archivo no se encuentra, revise el uso de mayúsculas y minúsculas en los nombres de archivo y en los comandos del código.
El código del ejemplo:
•Muestra cómo acceder al complemento. Modifique el código para remitir al archivo XPI y al identificador de clase (tipo MIME) de su versión del complemento (Trusted o Untrusted).
•Muestra cómo cargar un archivo en el complemento. Modifique el código para remitir a su documento de muestra.
•Implementa botones para el posicionamiento del cursor.
•Implementa comandos más complejos como comandos para ordenar tablas.
•Muestra cómo usar el evento SelectionChanged.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Página de prueba para Authentic Browser</title>
</head>
<!-- to disable the fast-back cache in Firefox, define an unload handler -->
<BODY id="bodyId" onunload="Unload()">
<embed
id="objPlugIn"
type="application/x-authentic-scriptable-plugin"
width="100%"
height="60%"
PLUGINSPAGE="http://tu-servidor-incluida-la-ruta/AuthenticFirefoxPlugin_trusted.xpi"
EntryHelpersEnabled="TRUE"
SaveButtonAutoEnable="TRUE" >
</embed>
<TABLE>
<SCRIPT LANGUAGE="javascript">
var objCurrentRange = null;
var objPlugIn = document.getElementById('objPlugIn');
function BtnDocumentBegin() { objPlugIn.AuthenticView.DocumentBegin.Select(); }
function BtnDocumentEnd() { objPlugIn.AuthenticView.DocumentEnd.Select(); }
function BtnWholeDocument() { objPlugIn.AuthenticView.WholeDocument.Select(); }
function BtnSelectNextWord() { objPlugIn.AuthenticView.Selection.SelectNext(1).Select(); }
function BtnSortDepartmentOnClick()
{
var objCursor = null;
var objTableStart = null;
var objBubble = null;
var strField1 = "";
var strField1 = "";
var nColIndex = 0;
var nRows = 0;
objCursor = objPlugIn.AuthenticView.Selection;
if (objCursor.IsInDynamicTable())
{
// calcular índice de columnas actual
nColIndex = 0;
bContinue = true;
while ( bContinue )
{
try { objCursor.GotoPrevious(11); }
catch (err) { bContinue = false; nColIndex--; }
nColIndex++;
}
// Ir al principio de la tabla
objTableStart = objCursor.ExpandTo(9).CollapsToBegin().Clone();
// recuento de filas
nRows = 1;
bContinue = true;
while ( bContinue )
{
try { objTableStart.GotoNext(10); }
catch (err) { bContinue = false; }
nRows++;
}
// ordenación de burbuja
for ( i = 0; i < nRows - 1; i++) {
for( j = 0; j < nRows-i-1; j++) {
objBubble = objCursor.ExpandTo(9).CollapsToBegin().Clone();
// Seleccionar columna correcta en la fila de tabla nºX
objBubble.GotoNext(6).Goto(10,j,2).Goto(11,nColIndex,2).ExpandTo(6);
strField1 = objBubble.Text;
try
{
strField2 = objBubble.GotoNext(10).Goto(11,nColIndex,2).ExpandTo(6).Text;
}
catch ( err ) { continue; };
if(strField1 > strField2) {
if(!objBubble.MoveRowUp()) {
alert(No está permitido mover la fila.');
return;
}
}
}
}
}
}
function InitAuthenticPluginPage( )
{
var serverstr=su-servidor/';
var basedir='Authentic/';
objPlugIn.SchemaLoadObject.URL = 'http://' + serverstr + basedir + 'OrgChart.xsd';
objPlugIn.XMLDataLoadObject.URL = 'http://' + serverstr + basedir + 'OrgChart.xml' ;
objPlugIn.DesignDataLoadObject.URL = 'http://' + serverstr + basedir + 'OrgChart.sps';
objPlugIn.StartEditing();
}
function Unload()
{
}
function OnSelectionChanged()
{
var CurrentSelection = null;
CurrentSelection = objPlugIn.AuthenticView.Selection;
SelTable_FirstTextPosition.innerHTML = CurrentSelection.FirstTextPosition;
SelTable_LastTextPosition.innerHTML = CurrentSelection.LastTextPosition;
SelTable_FirstXMLData.innerHTML = CurrentSelection.FirstXMLData.Parent.Name;
SelTable_FirstXMLDataOffset.innerHTML = CurrentSelection.FirstXMLDataOffset;
SelTable_LastXMLData.innerHTML = CurrentSelection.LastXMLData.Parent.Name;
SelTable_LastXMLDataOffset.innerHTML = CurrentSelection.LastXMLDataOffset;
}
objPlugIn.addEventListener("selectionchanged", OnSelectionChanged, false)
// suscripción a evento si se ejecuta en Firefox
objPlugIn.addEventListener("ControlInitialized", InitAuthenticPluginPage, false);
</SCRIPT>
<TR>
<TD><Input Type="button" value="Ir al principio" id="B1" onclick="BtnDocumentBegin()"></TD>
<TD><Input Type="button" value="Ir al final" name="B2" onclick="BtnDocumentEnd()"></TD>
<TD><Input Type="button" value="Documento entero" name="B3" onclick="BtnWholeDocument()"></TD>
<TD><Input Type="button" value="Seleccionar palabra siguiente" name="B4" onclick="BtnSelectNextWord()"></TD>
</TR>
<TR>
<TD><Input Type="button" value="Ordenar tabla en función de esta columna" id="B6" onclick="BtnSortDepartmentOnClick()"</TD>
</TR>
</TABLE>
<TABLE id=SelTable border=1>
<TR><TD id=SelTable_FirstTextPosition></TD><TD id=SelTable_LastTextPosition></TD></TR>
<TR><TD id=SelTable_FirstXMLData></TD><TD id=SelTable_FirstXMLDataOffset></TD></TR>
<TR><TD id=SelTable_LastXMLData></TD><TD id=SelTable_LastXMLDataOffset></TD></TR>
<TR><TD id=SelTable_Text></TD></TR>
</TABLE>
</body>
</html>