如何防止iframe显示外部网站
How to prevent an iframe to display external websites?
假设我在iframe.domain.com上显示一个iFrame。我希望这个iframe能够从iframe.domain.com或sub.domain.com显示内容。但这些网站包含外部网站的链接,例如google.com。如果用户点击链接将其重定向到google.com,我希望iFrame重定向到sub.domain.com
我该怎么做呢?
您可以使用e.preventDefault()
来实现这一点要实现这个
现在要在框架的链接上设置onclick处理程序,可以使用这个函数
function onLoadIF(frame)
{
var elements = frame.getElementsByTagName('a'),
len = elements.length;
while( len-- ) {
$(elements[len]).on('click', function(e){
e.preventDefault();
}
}
}
我想扩展一下Arno_Geismar的话。
你有其他选择:
1) HTML5 !
<iframe sandbox="value">
沙箱属性将:
sandbox属性为iframe中的内容启用了一组额外的限制。
当sandbox属性存在时,它将:
- 将内容视为来自唯一来源
- 块表单提交
- 块脚本执行 <
- 禁用api/gh>
- 防止链接指向其他浏览上下文
- 阻止内容使用插件(通过,,或其他)
- 阻止内容导航到其顶层浏览上下文
- 块自动触发功能(如自动播放视频或自动对焦窗体控件)
sandbox属性的值可以只是sandbox(然后应用所有限制),或者是一个空格分隔的预定义值列表,将删除特定的限制。
更多信息在这里
2) Javascript:如果你使用jquery,你可以简单地把这个
$(document).ready(function(){
$('a').click(function(event) {
event.preventDefault();
});
});
这基本上(几乎)与Arno_Geismar给你的解决方案相同。这里的不同之处在于,我不需要循环遍历所有"a"元素,从而略微提高了性能
我遇到了这个问题,我确定的解决方案是:
在
<header>
部分设置Content-Security-Policemeta
标签:<meta http-equiv="Content-Security-Policy" content="frame-src https://desired_domain.com/">
- 我如何限制我的iframe只使用本地内容?
- developer.mozilla.org - Content-Security-Policy: frame-src
使用
<iframe>
的sandbox
属性,如果你想阻止链接打开一个新的选项卡:<iframe src="https://desired_url.com" sandbox="allow-same-origin allow-scripts"></iframe>
- W3Schools.org - HTML <沙箱属性
相关文章:
- 什么更好?使用iframe或jQuery之类的东西在外部网站中加载HTML文件
- 使用node.js获取外部网站内容
- 如何在其他公共网站中拉取外部网站的URL
- 控制node.js应用程序's通过外部网站举办的活动
- 从外部网站获取JSON数据
- 单击指向外部网站的链接后,通过MySQL保存数据
- 调整外部网站内容的大小以适应iFrame宽度
- 如何在煎茶触控 2 中自动打开外部网站
- Chrome 扩展徽章颜色外部网站 JavaScript 更改
- 抓取外部网站,但返回“您必须在此站点上使用支持 JavaScript 的浏览器”错误
- 监控外部网站的HTTP请求
- 使用颜色框在弹出窗口中加载外部网站
- 如何在运行时应用外部网站的样式
- 如何在外部网站上提交表单并获得生成的 HTML
- 将VBA转换为与外部网站交互
- 从外部网站获取谷歌地图数据
- 在外部网站上使用Inappbrowser自动登录
- Visual Studio 13,将HTML5网页重定向到外部网站
- 跟踪像素应该通过引用页面加载外部网站 - 但它不起作用
- 当我加载外部网站的内容时,Javascript没有加载