访问使用window.open打开的窗口的内容
Accessing the content of a window opened with window.open
我知道我可以访问用window打开的窗口。像这样打开:
var myWindow = window.open('url','uniqueWindowId','argument=value,argument=value')
myWindow.document.getElementById('someId').display = "none";
myWindow.document.getElementsByClassName('someClass')[17].firstChild.style.backgroundColor = "red";
...
但是我有,在调试第三方代码期间,我无法从控制台访问myWindow变量的问题(myWindow仅适用于函数)。是否有任何方法我可以得到窗口,使用其唯一的窗口,从父窗口的javascript控制台?
没有标准函数,但我可以看到一个可能的方法:
function retrievePopupWindowHandle(windowName, callback){
window.open('javascript:window.opener.handleRetrieved = window;', windowName);
setTimeout(function(){
var popupHandle = window.handleRetrieved;
delete window.handleRetrieved;
callback(popupHandle);
}, 1);
}
但请记住,您仍然处于所有安全措施之下,例如相同的协议和来源策略。
不建议这样做,但是可以。
一个快速测试来显示它的工作(由于安全策略,它不会在jsfiddle上工作,在本地创建一个文件并在浏览器中打开它):
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<button id="b">Create Window</button>
<button id="b2">Retrieve Handle & Test</button>
<script>
var popupWindow;
function retrievePopupWindowHandle(windowName, callback){
window.open('javascript:window.opener.handleRetrieved = window;', windowName);
setTimeout(function(){
var popupHandle = window.handleRetrieved;
delete window.handleRetrieved;
callback(popupHandle);
}, 1);
}
document.getElementById('b').addEventListener('click', function(){
popupWindow = window.open('about:blank', 'popupWindow');
});
document.getElementById('b2').addEventListener('click', function(){
retrievePopupWindowHandle('popupWindow', function(popup){
if(popupWindow == popup)
alert('Handles Match!');
});
});
</script>
</body>
</html>
相关文章:
- 通过window.opener将弹出窗口中的值传递给父窗口
- 检测window.opener窗口刷新事件
- $.ajax().done()中的window.open和弹出窗口拦截器
- window.open:是否可以通过修改DOM来打开一个新窗口
- 在window.open()生成的窗口中执行JavaScript
- ColdFusion.Window.create不刷新弹出窗口
- javascript window.open(),并在新窗口中搜索DOM
- window.open没有't在设置setTimeout内工作-弹出窗口被阻止
- 跨原点-弹出窗口(window.opener为空)
- 使用 javascript 创建的窗口在使用 window.close() 时不会在卸载之前触发
- window.open在单击按钮打开新窗口时出错
- Javascript-window.open()弹出窗口大小问题
- 为什么我的firefox扩展javascript不能访问opener窗口,也看不到window.name
- window.onload在窗口已打开时未启动
- window.打开IE 11中的新选项卡而不是新窗口
- window.location.href窗口未在javascript中定义
- $window错误'$窗口未定义'Angular应用程序中的谷歌分析代码
- window.打开谷歌浏览器中的选项卡和窗口
- 组合$window和$stateProvider以打开一个新的浏览器选项卡窗口
- 避免重复的浏览器选项卡或窗口(window.open())