我在网页中嵌入了一个 iframe。这个 iframe 在一个元素中有一些rect
元素svg
。以下代码用于将事件绑定到 `rect 元素:
JS代码:
$(() => {
let bindEvents = () => {
let targets = $('iframe').contents().find('rect');
$.each(targets, (elm, i) => {
$(targets[elm]).on('click', () => {
alert('Hello, World!');
});
});
}
setTimeout(bindEvents, 10000);
});
在 chrome 64 上,当打开开发者控制台时,这些事件将被删除。在 chrome 65 上,如果未打开开发人员控制台,这些事件将不会被绑定。这些问题发生在 Ubuntu 上的 chrome 中。Chrome 58 和 61 在绑定 evnet 方面没有问题。
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Metabase Test</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="style.css" />
<script
src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script src="script.js"></script>
</head>
<body>
<div id="content-root">
<iframe width="100%" height="500" id="total-sales-test" src="url-from-metabase"></iframe>
</div>
</body>
</html>
url 或 iframe 来自元数据库。我无法在此处发布完整的网址,因为它是机密的。