protected String bindRestoreBackupStylePropertyMethod( String methodName, ClientDocumentStfulDelegateWebImpl clientDoc) { StringBuilder code = new StringBuilder(); code.append("var func = function (elem,propName)"); code.append("{"); code.append(" if (typeof elem.style == \"undefined\") return;"); code.append(" var name = \"style_itsnat_\" + propName;"); code.append(" var cssProp = this.getPropInNative(elem,name);\n"); code.append(" if (cssProp == null) return;\n"); // No se salvó code.append(" elem.style[propName] = cssProp;\n"); code.append(" this.removePropInNative(elem,name);\n"); code.append("};"); code.append("itsNatDoc." + methodName + " = func;\n"); clientDoc.bindClientMethod(methodName); return code.toString(); }
protected String bindBackupAndSetStylePropertyMethod( String methodName, ClientDocumentStfulDelegateWebImpl clientDoc) { // Usamos variables temporales asociadas al objeto Element y no al propio "style", // por: // Safari (3.1 al menos) parece que recrea el objeto style tras un display='none" en algunos // casos por lo que perderíamos la variable backup. // Aseguramos que no se asigne un valor "undefined" pues navegadores como Gecko ignoran una // asignación con valor "undefined" y no cambian el valor, // el problema es que debemos restaurar el valor anterior y está claro que restaurar un // undefined no es posible, // el valor "" viene a ser el valor por defecto habitual. // Nota: Opera Mobile 9.5 SVG ignora la propiedad "dispose" (sin error), solucionado en 9.7 StringBuilder code = new StringBuilder(); code.append("var func = function (elem,propName,newValue)"); code.append("{"); code.append( " if (typeof elem.style == \"undefined\") return;"); // Esto ocurre por ejemplo con // <script> en algun navegador (no me // acuerdo) y con <foreignObject> en // SVG en Opera Mobile 9.5. code.append(" var name = \"style_itsnat_\" + propName;"); code.append(" var cssProp = elem.style[propName];"); code.append(" if (typeof cssProp == \"undefined\") cssProp = \"\";"); code.append(" this.setPropInNative(elem,name,cssProp);"); code.append(" elem.style[propName] = newValue;"); code.append("};"); code.append("itsNatDoc." + methodName + " = func;\n"); clientDoc.bindClientMethod(methodName); return code.toString(); }