如何从 中删除制表位<iframe>
?<iframe>
托管在我的域上。
我试过以下代码:
var objIFrame = document.getElementById('my_iframe');
if (objIFrame != null) {
objIFrame.setAttribute('tabindex', '-1');
}
但我仍然专注于 iframe。
如何从 中删除制表位<iframe>
?<iframe>
托管在我的域上。
我试过以下代码:
var objIFrame = document.getElementById('my_iframe');
if (objIFrame != null) {
objIFrame.setAttribute('tabindex', '-1');
}
但我仍然专注于 iframe。
iFrame 并不真正支持选项卡或选择,它通常是 iFrame 内的文档或正文是可选择的。尝试类似:
var objIFrame = document.getElementById('my_iframe');
objIFrame.contentDocument.setAttribute('tabindex', '-1');
objIFrame.contentDocument.getElementsByTagName('body')[0].setAttribute('tabindex', '-1');
我研究了 Stripe Elements 作为一个例子来解决这个问题 - 他们<iframes>
用来收集信用卡号码并在他们的所有字段中都有一个平滑的标签环。
没有任何设置tabindex
对我有用,所以我选择用 JavaScript 来代替。我通过侦听要聚焦的窗口来修复它<iframe>
,然后将该焦点重定向到我想要的元素。这需要您控制<iframe>
的内容。
window.addEventListener('focus', function() {
document.getElementById('myInput').focus();
})
这是一个例子:
索引.html
<html>
<body>
My input
<input type="text" />
<iframe src="https://www.example.com/iframe.html" />
<body>
</html>
iframe.html
<html>
<body>
More inputs
<input type="text" />
<input type="text" />
<input type="text" />
<script>
window.addEventListener('focus', function() {
document.getElementById('myInput').focus();
})
</script>
<body>
</html>
我注意到这种行为是 Internet Explorer 11 和 Firefox 76 独有的,但不影响 Chrome 81 或 Edge 81。