你如何传递的选项参数JSON对象打开一个新的窗口?
-
19-09-2019 - |
题
对window.open()对象具有一些时髦参数列表...
是有办法像做window.open({选项..});
思想?
解决方案
有是内置于语言没有这样的设施。
不过,这也很容易自己写一个。结果 例如:
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) );
没有。这就是所谓的使用JavaScript DOM功能。
在任何情况下,“选项对象”策略确实只进入如此巨大的用法与JSON的概念,其通过一段时间的DOM规范preceeds。
您可以建立一个JS对象与参数字段,如果你想开窗器的辅助覆盖的toString()。
没有,但你可以写自己的包装很轻松了。
我不这样认为作为特征是逗号分隔的窗口功能列表
从的 MDC 强>
var WindowObjectReference = window.open(strUrl,
strWindowName
[, strWindowFeatures]);
有什么从编写的包装虽然接受对象阻止你,然后用适当的参数调用window.open()
你可以让自己的函数解析JSON对象,并调用window.open()的基础上,分析具体PARAMS功能?
不隶属于 StackOverflow