【问题标题】:Chrome DevTools getEventlisteners not working inside iFrameChrome DevTools getEventlisteners 在 iF​​rame 中不起作用
【发布时间】:2019-05-12 21:55:28
【问题描述】:

我想访问/调试绑定到特定事件的函数。例如,我可以这样做

$> getEventListeners(window)

查看所有绑定到window对象的事件,然后

$> debug(getEventListeners(window).focus[0].listener)

开始调试。

但是,就我而言,我有一个 iframe

<body>
   ...
   <iframe id="test" name="test" src="./inner.html"></iframe>
   ...
</body>

现在假设inner.html 包含以下内容:

<body>
    <div class="abc">Click me</div>
    <script>
        window.addEventListener('keydown', e => console.log('keydown', e));        
        document.querySelector('.abc').addEventListener('click', e => console.log('clicked', e));
    </script>
</body>

我想调试这两个侦听器,如上所述,结果getEventListeners 不再起作用(或者我做错了什么!)

iframe = document.querySelector('iframe#game');
doc = iframe.contentDocument || iframe.contentWindow.document;
win = iframe.contentWindow;

getEventListeners(win); // -> {}
getEventListeners(doc.querySelector('.abc')); // -> {}

我收到了{},没有找到事件监听器。

所以问题是,如何访问 iframe 中的事件侦听器?

注意:因为这仅用于本地测试/调试,如果需要,我可以切换任何 chrome 设置以使其正常工作!有什么建议吗?

【问题讨论】:

标签: javascript debugging google-chrome-devtools dom-events


【解决方案1】:

作为@epascarello 评论 - 您需要将调试窗口的上下文更改为 iframe

Official documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-03
    • 2020-03-04
    • 2012-05-02
    • 2018-02-26
    • 1970-01-01
    • 2012-06-06
    • 2015-02-01
    • 2014-12-05
    相关资源
    最近更新 更多