绑定窗口.打开HTML元素的响应对象
Binding window.open response object to an html element?
这里我试图使用.data()
来存储来自window.open
函数的对象数据。但它似乎不起作用,所有我得到的是undefined
为dataWin
变量。
我想知道如何完成一个函数,将打开一个新窗口,当一个窗口没有打开,否则只有.focus()
在一个已经打开的窗口,使用window.open
。因为当我在相同的窗口名称上使用window.open
时,它会导致新窗口刷新,这对我的应用程序来说是一个问题。
我试着得到
undefined
或者,是否有一种方法来检查窗口是否已经通过窗口名称打开?(在谷歌上搜索后没有找到任何可以做到的)
无论如何,这是我正在尝试的,没有任何运气:
function OpenNewWindow_Or_FocusOpenWindow(name) {
dataWin = $("#id-" + name).data('winData')
if (dataWin == 'undefined') { windowClosed = true }
else { windowClosed = dataWin.closed }
if ( windowClosed == true ) {
newWin = window.open('myurl' , "win" + name , 'options');
$("#id-" + name).data('winData',newWin);
if (newWin != null) { newWin.focus() }
}
else {
dataWin.focus();
}
}
您正在使用dataWin
, newWin
和windowClosed
作为全局变量。将它们限定为本地函数。除此之外,你对undefined的检查是错误的。下面是修改后的代码,它可以做你想做的事情:
function OpenNewWindow_Or_FocusOpenWindow(name) {
var el = $("#id-" + name),
dataWin = el.data('winData'),
windowClosed,
newWin;
windowClosed = (typeof dataWin === 'undefined') ? true : dataWin.closed;
if (windowClosed) {
newWin = window.open('myurl' , "win" + name);
el.data('winData',newWin);
if (newWin) {
newWin.focus()
}
}
else {
dataWin.focus();
}
}
确保您传递给函数的名称实际上具有ID为' ID - name '的相应DOM元素,否则您的数据将无处可去。
请记住:例如在Google Chrome .focus()被阻止任何弹出窗口。因此,使用对.focus()的简单调用将无法在那里实现所需的功能。
相关文章:
- 我不知道如何正确地将REST响应对象传递给ReactJS子组件
- 获取 API 响应对象并替换(映射)所有键
- 如何在 http 上调用 end().服务器响应对象
- Express JS-查看/检查响应对象
- 请求一个完整的响应对象,而不是紧凑的响应对象foursquare场地搜索api
- json - 从响应对象中获取值,并将其插入请求中
- JSON 响应对象:“漂亮”键和较大的响应或短键和较小的响应
- 如何在 JavaScript 中访问 data.submit() 的 json 响应对象
- 在 Ember 对象中深度包装 JSON 响应对象
- 如何从多个 JSON 响应对象检索数据
- Twilio响应对象未定义,但没有错误
- 在Express和Node.js中,是否可以扩展或覆盖响应对象的方法
- 如何获得这里给出的响应对象的长度
- 将ajax响应对象存储在全局变量中--字段丢失
- 我可以从js文件中获得关于Symfony2响应对象的信息吗
- 在php中手动创建一个HTTP响应对象,发送它,并用Javascript捕获它
- 如何在Node.js/Express中创建响应对象
- IE8中解析JSON响应对象
- 从POST请求中获取干净的响应对象
- 多个文件追加到节点js的响应对象中