Come si può passare JSON oggetto di parametri di opzione per aprire una nuova finestra?
-
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?
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?