Как передать JSON-объект параметров параметров, чтобы открыть новое окно?

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

  •  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() с определенными параметрами на основе анализа?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top