gpt4 book ai didi

javascript - 在 iFrame 中禁用外部内容加载

转载 作者:行者123 更新时间:2023-12-05 08:11:29 26 4
gpt4 key购买 nike

是否可以禁止在 iFrame 中加载外部内容?假设有一个 iframe 定义如下:

<iframe srcdoc="
<html>
<head>
<title>Example Page!</title>
<link rel='stylesheet' type='text/css' href='http://example.com/mystyle.css'>
</head>
<body>
<p class='main'>Here goes the text.
</p>

<script src='http://example.com/js/superscript.js'>
</body>
</html>">
</iframe>

可以使用 sanbox 属性中的 allow-scripts 禁用 JS 的加载,但是有什么方法可以禁用外部 css(和其他外部内容)的加载吗?

如果没有,是否有任何替代“呈现”html 代码(例如通过 JS)的方法来启用此功能?

最佳答案

我做了以下功能来删除从 iframe 中显示的电子邮件中加载一些 Assets :

  const replaced = []
const h = html
.replace(/url\s*\(([\s\S]+?)\)/g, (m,url) => {
url = url.trim()
try {
url = decodeURIComponent(url)
} catch (err) {/**/}
replaced.push(url)
return 'url()'
})
.replace(/[\s'"](?:src|srcset|background)?\s*=\s*(['"])([^\1]*?)\1/g, (m,q,src) => {
if (!src) return m // empty
replaced.push(src)
return ''
})
.replace(/<\s*link[^>]*?([\s'"]href\s*=\s*(['"])([^\2]*?)\2)/g, (m,attr,q,src) => {
if (!src) return // empty
replaced.push(src)
return m.replace(attr, '')
})

有趣的是,<img alt="test"src="http://src.com/img.jpg">是有效的并且将由 chrome 显示,因此实际上不需要属性之前的空格,所以我编辑了这个答案以解决这个问题......

它可能并不完美,但您可以通过添加属性在看到更多案例时对其进行调整...

关于javascript - 在 iFrame 中禁用外部内容加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56619724/

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