在javascript中更改时,将目标锚定到iframe不起作用(在新选项卡中打开)



我在锚标记和iframe方面遇到了一些问题。。。

当我在javascript中更改iframes名称属性时,由于某种原因,它不起作用。

尽管它实际上已经更改(在googlechrome开发工具中检查过(,但url会在一个新的选项卡中打开,而不是在iframe中打开。然而,旧的iframes名称仍然有效。。。

这里有一个例子:

document.getElementById('myIframe').name = 'newName';
<html>
<body>
<iframe id="myIframe" name="oldName"></iframe>
<a href="https://www.wikipedia.com" target="newName">newName</a>
<a href="https://www.wikipedia.com" target="oldName">oldName</a>
</body>
</html>

然而,在stackerflows内置fiddle中,它不会在新的选项卡中打开(我想是出于安全原因吗?(

在JsFiddle上,它的行为就像对我来说一样https://jsfiddle.net/qrxtn3L5/1/

有人知道怎么解决这个问题吗?

创建iframe时,一个窗口将附加到实际上是目标的iframe。更新现有iframe的name属性时,iframe内的窗口不会更新。

这并不是一个真正的bug,但有点违背直觉。

你可以用来解决这个问题

document.getElementById('#myIframe').documentWindow.name = 'newName';

如果删除并重新创建iframe,它也会起作用。

此外,我还必须说:避免将iframe一起使用。这是一种糟糕的做法。如果您的目标是创建一个单页应用程序,您可能需要考虑使用前端框架,如Angular、React或Vue.js(还有很多(。

最新更新