Javascript 从另一个子窗口对焦子窗口
我有如下这样的场景: 我有一个主窗口[Javascript 从另一个子窗口对焦子窗口,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有如下这样的场景: 我有一个主窗口[main.html]。有三个链接称为Popup1、Popup2、Popup3。单击链接可分别打开Popup1窗口,Popup2窗口 <html> <head> <title>Popup Focus Example</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/j
main.html
]。有三个链接称为Popup1、Popup2、Popup3。单击链接可分别打开Popup1窗口
,Popup2窗口
<html>
<head>
<title>Popup Focus Example</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
var openWin = [];
$(function(){
$('#elem').on('click', 'a', function(){
var index = $(this).index();
var page = 'pop'+(index+1)+'.html';
var w = window.open(page, $(this).attr('title'), '_blank');
openWin[index] = w;
});
});
</script>
</head>
<body>
<div id="elem">
<a href="javascript:void(0);" title="Pop 1">Pop 1</a>
<a href="javascript:void(0);" title="Pop 2">Pop 2</a>
<a href="javascript:void(0);" title="Pop 3">Pop 3</a>
</div>
</body>
</html>
弹出焦点示例
var openWin=[];
$(函数(){
$('#elem')。在('click','a',function()上{
var index=$(this.index();
var page='pop'+(索引+1)+'.html';
var w=window.open(第页,$(this.attr('title'),'u blank');
openWin[index]=w;
});
});
现在打开的窗口是窗口1和窗口2。我想从窗口2转移窗口1的焦点。有没有办法做到这一点
pop1.html
<html>
<head>
<title>Popup 1 Example</title>
<script type="text/javascript">
function go() {
if(window.opener.openWin) {
var popup2 = window.opener.openWin[1];
popup2.focus();
}
}
</script>
</head>
<body>
<div>
popup 1 example
</div>
<div><a href="javascript:void(0);" onclick="go();">Go to Popup2</a></div>
</body>
</html>
弹出窗口1示例
函数go(){
if(window.opener.openWin){
var popup2=window.opener.openWin[1];
popup2.focus();
}
}
弹出窗口1示例
pop2.html
<html>
<head>
<title>Popup 2 Example</title>
</head>
<body>
<div>
popup 2 example
</div>
</body>
</html>
弹出窗口2示例
弹出窗口2示例
检查fiddle中的main.html代码如果代码编写正确,请实现下面列出的两个更改 1) 您需要在openWin数组中推送窗口对象
var openWin = [];
$(function(){
$('#elem').on('click', 'a', function(){
var index = $(this).index();
var page = 'pop'+(index+1)+'.html';
var w = window.open(page, $(this).attr('title'), '_blank');
//openWin[index] = w;
openWin.push(w); //Push the window object
});
});
2) 使用数组索引访问窗口对象以聚焦窗口
function go() {
//console.log(openWin);
//if(window.opener.openWin) {
// var popup2 = window.opener.openWin[1];
//popup2.focus();
//}
//Supposing that pop1, pop2 and pop3 are opened, you want to access pop2
openWin[1].focus();
}
希望有帮助 您可以使用方法window.open
window.open("",window_name).focus();
假设窗口已打开,则可以使用上述代码将焦点转移到窗口
请在pop2.html中使用以下代码,并尝试[按顺序打开所有窗口后]
<html>
<head>
<title>Popup 2 Example</title>
<script language="javascript">
function openNew()
{
window.open("","Pop 3").focus();
}
</script>
</head>
<body>
<div>
popup 2 example
</div>
<a href="javascript:void(0);" onclick="javascript:openNew();">
Go to pop3</a>
</body>
</html>
弹出窗口2示例
函数openNew()
{
window.open(“,”pop3“).focus();
}
弹出窗口2示例
根据您的代码,您正在使用title属性来命名窗口,因此POP3用于将焦点转移到POP3窗口
或者,您可以检查窗口实例是否打开,然后完全加载URL或转移焦点
希望对你有帮助 Make go()函数只需调用打开器窗口中的函数,例如:
window.blur(); //focus out of here
window.opener.myParentWindowFunction( 2 );
该函数(在“父”窗口中)应调用目标窗口中的函数,该函数仅为“window.focus()”
在每个弹出窗口上:
function callFocus(){ window.focus(); }
你不能让一个窗口“发送”焦点到另一个窗口(我猜是安全问题),但你可以让一个窗口“请求”。。。这取决于浏览器是否能够获得它(在chrome中不起作用,但是如果在焦点后添加一个alert(),它将改变窗口。有趣的是,如果你只是放置了警报而不是焦点,它不会交换窗口…)
代码只是一个模型,但这是概念。您必须使用“开启器”窗口作为中继通信,与需要调用焦点的窗口进行通信。希望您不需要交叉浏览。请按顺序打开所有窗口,然后再试一次!我已经在Firefox中测试过了,我也在chrome上检查过了!我得到的
openWin
未在pop1.html页面上定义关闭所有打开的窗口,刷新页面并通知我!如何在pop1.html页面中获取openWin
变量。它始终显示未定义。openWin
在main.html页面中定义。
function callFocus(){ window.focus(); }