1

如何从 中删除制表位<iframe><iframe>托管在我的域上。

我试过以下代码:

var objIFrame = document.getElementById('my_iframe');
if (objIFrame != null) {   
   objIFrame.setAttribute('tabindex', '-1');
}

但我仍然专注于 iframe。

4

2 回答 2

1

iFrame 并不真正支持选项卡或选择,它通常是 iFrame 内的文档或正文是可选择的。尝试类似:

var objIFrame = document.getElementById('my_iframe');
    objIFrame.contentDocument.setAttribute('tabindex', '-1');
    objIFrame.contentDocument.getElementsByTagName('body')[0].setAttribute('tabindex', '-1');
于 2013-02-26T15:03:36.063 回答
0

我研究了 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。

于 2020-05-21T01:24:03.997 回答