Как передать JSON-объект параметров параметров, чтобы открыть новое окно?
-
19-09-2019 - |
Вопрос
объект window.open() имеет какой-то странный список параметров...
есть ли способ сделать что-то вроде window.open({options..});
Мысли?
Решение
В языке нет такой возможности.
Однако довольно легко написать его самостоятельно.
Например:
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);
}
Другие советы
хорошо
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(','));
}
Ты мог бы пройти options
в качестве параметра URL:
window.open( myURL + "/?options=" + JSON.stringify(options) );
Нет.Это функция dom, вызываемая с помощью javascript.
В любом случае, стратегия «объекта параметров» на самом деле начинает широко использоваться только вместе с концепцией JSON, которая на некоторое время предшествует спецификации DOM.
Вы можете создать объект JS с полями для параметров и переопределить toString(), если вам нужен помощник для открытия окон.
Нет, но вы можете достаточно легко написать свою собственную оболочку.
Я так не думаю, поскольку функции представляют собой список функций окна, разделенных запятыми.
От МДЦ
var WindowObjectReference = window.open(strUrl,
strWindowName
[, strWindowFeatures]);
Ничто не мешает вам написать обертку, которая принимает объект, а затем вызывает window.open()
с соответствующими аргументами
вы могли бы создать свою собственную функцию для анализа объекта JSON и вызвать функцию window.open() с определенными параметрами на основе анализа?