Come si può passare JSON oggetto di parametri di opzione per aprire una nuova finestra?

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

  •  19-09-2019
  •  | 
  •  

Domanda

l'oggetto window.open () ha una certa lista di parametri funky ...

c'è un modo per fare qualcosa di simile window.open ({opzioni ..});

Pensieri?

È stato utile?

Soluzione

Non esiste una struttura integrata al linguaggio.

Tuttavia, è abbastanza facile scrivere uno voi stessi.
Ad esempio:

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);
}

Altri suggerimenti

e

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(','));
}

È possibile passare options come parametro URL:

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

No. Questa è una funzione dom chiamato con javascript.

In ogni caso, la strategia di 'opzioni oggetto' è in realtà solo entrando in così grande utilizzo con il concetto di JSON, che le precede DOM spec per un certo tempo.

È possibile costruire un oggetto di JS con campi per i parametri e sovrascrivere toString () se si desidera un aiuto apri della finestra.

No, ma si potrebbe scrivere il proprio involucro abbastanza facilmente.

Non credo che così come le caratteristiche sono un elenco separato da virgole delle caratteristiche delle finestre

Da MDC

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

Non c'è nulla ti impedisce di scrivere un wrapper però che accetta un oggetto e quindi chiama window.open() con gli argomenti appropriati

si potrebbe rendere la propria funzione per analizzare un oggetto JSON e chiamare i window.open () con params specifici basati sulla analisi?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top