gpt4 book ai didi

javascript - 强制 IFrame 中的任何 HREF 使用其父级作为目标

转载 作者:行者123 更新时间:2023-11-29 18:37:35 28 4
gpt4 key购买 nike

我目前正在使用 IFrame 对网站上用户生成的内容进行沙盒处理。这消除了我们主要样式表的任何样式问题。

但是,当用户使用我们的富文本编辑器生成链接时,我们希望链接在父级中打开,而不仅仅是在 IFrame 中打开链接。我知道您可以为 parent 设置一个目标,但我们无法控制用户以及他们在其内容中输入的内容。

有什么方法可以劫持 IFrame 中的 HREF,以便它们都以父级为目标而不修改它们?或者使用一些可以普遍注入(inject)的 Javascript,这样我就不需要抓取所有内容并以编程方式替换目标?

理想情况下,一个简单的脚本放在一个地方是最好的解决方案。

想法?

结束解决方案

我使用了我选择的答案的变体...它让我朝着正确的方向前进。

<script>
Event.observe(window, 'load', function() {
$$('a').each(function(e) {
e.writeAttribute('target', '_parent');
});
});
</script>

它位于带有内容的 IFrame 中。它最终成为该任务最简单的解决方案。

最佳答案

iframe 中的相同域?是的。

<script type="text/javascript">
function hijacklinks(iframe){
var as = iframe.contentDocument.getElementsByTagName('a');
for(i=0;i<as.length;i++){
as[i].setAttribute('target','_parent');
}
}
</script>

<iframe src="http://example.com/test.html" onload="hijacklinks(this)"></iframe>

iframe 中的不同域?没有。

<iframe src="http://www.google.com/search?q=google+happy" onload="hijacklinks(this)"></iframe>

产生“获取属性 HTMLDocument.getElementsByTagName 的权限被拒绝”。

可能有解决方法,但至少使用简单的 JavaScript 可以防止 iframe 与网站混为一谈(想象一下银行网站周围的恶意框架,您就会明白原因)。

关于javascript - 强制 IFrame 中的任何 HREF 使用其父级作为目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225245/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com