我在锚标记和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(还有很多(。