有没有办法获取弹出窗口的URL /位置?
代码:
<html>
<head>
<script>
function openWin()
{
myWindow=window.open('http://www.google.com','','width=200,height=100');
console.debug(myWindow.location.href);
console.debug(window.location.href);
}
</script>
</head>
<body>
<input type="button" value="Open window" onclick="openWin()" />
</body>
</html>
第一个控制台打印about:blank
当第二个控制台打印当前页面的URL(即上面代码的URL,它不会打印弹出窗口的URL)
为什么第一个控制台不打印该位置(即http://www.google.com)?
任何人都可以帮我解决这个问题吗?
提前致谢。
答案 0 :(得分:1)
正如@ Hg3所说,您无法访问location.href
myWindow
。 window.open
会返回一个空的DOMWindow
。
但是,您可以覆盖window.open
并维护已打开的所有窗口的简单数组。
//override window.open
var windows = [];
window._open = window.open;
window.open = function(url, name, params){
windows.push(name, url);
return window._open(url, name, params)
}
//function return href by name
function hrefByName(name) {
var index=(windows.indexOf(name));
return (index>-1) ? windows[index+1] : 'undefined';
}
//modified openWin function
function openWin(url, name) {
var params='width=200,height=100';
window.open(url, name, params);
//test, ouput current url and the windows array
console.log(hrefByName(name));
console.log(windows);
}
测试标记:
<input type="button" value="google" onclick="openWin('http://google.com', 'google')" />
<input type="button" value="bing" onclick="openWin('http://bing.com', 'bing')" />
<input type="button" value="stackoverflow" onclick="openWin('http://stackoverflow.com', 'stackoverflow')" />
当然,我猜你有一个动态生成URL的设置 - 只需构建随机名称或传递一个唯一的数字作为名称。
答案 1 :(得分:0)
由于浏览器安全性阻止您从与脚本不在同一域中的任何窗口获取URL。因此,如果您的代码在example.com上运行,那么您只能获取example.com上的任何窗口的URL。