¿Cómo se puede pasar un Objeto JSON de parámetros de opción para abrir una ventana nueva?

StackOverflow https://stackoverflow.com/questions/2420410

  •  19-09-2019
  •  | 
  •  

Pregunta

la ventana.open() del objeto tiene algo de funky lista de parámetros...

hay una manera de hacer algo como ventana.abierta({opciones..});

Los pensamientos?

¿Fue útil?

Solución

No hay tal instalación incorporada a la lengua.

Sin embargo, es bastante fácil de escribir uno usted mismo.
Por ejemplo:

function popup(url, name, options) {
    if (arguments.length === 2) {
        options = name;
        name = options.name;
    }

    var features = false;

    for (var key in options) {
        if (!options.hasOwnProperty(key)) continue;
        if (key === "name") continue;

        if(features)
            features += ",";

        features += key + "=";

        if (!options[key])
            features += "no";
        else if (options[key] === true)
            features += "yes";
        else
            features += options[key];
    }
    return window.open(url, name, features);
}

Otros consejos

así

function newWindow(options) {
  var opts = [], keys = ['height', 'width', 'scrollable', /* all those options */];
  for (var i = 0; i < keys.length; ++i) {
    if (keys[i] in options)
      opts.push(keys[i] + '=' + options[keys[i]]);
  }
  return window.open(options.url, options.name, opts.join(','));
}

Se podía pasar options como un parámetro URL:

window.open( myURL + "/?options=" + JSON.stringify(options) );

No. Esa es una función llamada dom con javascript.

En cualquier caso, la estrategia de 'objeto opciones', realmente está entrando en tan gran uso con el concepto de JSON, que precede a las especificaciones DOM por algún tiempo.

Se puede construir un objeto JS con los campos para los parámetros y anular toString () si desea que un ayudante ventana de apertura.

No, pero usted puede escribir su propio envoltorio con bastante facilidad.

Yo no lo creo como las características son una lista separada por comas de las características de la ventana

Desde MDC

var WindowObjectReference = window.open(strUrl, 
                                        strWindowName  
                                        [, strWindowFeatures]);

No hay nada que le para de escribir un envoltorio sin embargo, que acepta un objeto y luego llama window.open() con los argumentos adecuados

usted puede hacer su propia función para analizar un objeto JSON y llamar a la ventana.función open() con los parámetros específicos basados en el análisis?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top