コード例 #1
0
  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();
  }
コード例 #2
0
  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();
  }