Chrome 114升级至115后iframe显示空白问题求助
Chrome 115升级后iframe加载空白(请求未发送)的排查方案
针对你遇到的Chrome升级后iframe空白、请求未发送的问题,结合Chrome 115的特性变化,给你几个实用的排查和解决方向:
1. 手动触发iframe的src加载(适配Chrome加载时机调整)
Chrome 115对隐藏元素中的iframe加载逻辑做了调整,初始设置的src如果在元素处于display:none状态时,可能不会触发请求。解决方法是在显示模态框时,重新设置iframe的src:
修改HTML,把原始地址存在data-src属性:
<div class="modal fade loadIframe"> <iframe id="frame-top-dt" data-src="BASE_PATH/xxx.php?id=ID" width="100%" style="border:0px;height: 100%;"></iframe> </div>
修改JS,显示时重新赋值src:
$('#click-on-me').click(function() { const $iframe = $('#frame-top-dt'); // 重新设置src触发请求 $iframe.attr('src', $iframe.data('src')); $(".loadIframe").css("display", "block"); })
2. 改用Bootstrap模态框官方API(避免非标准触发问题)
你用的是Bootstrap的modal组件,但直接修改display:block没有触发组件的生命周期事件,Chrome 115对这种非标准触发的元素加载可能有拦截。建议改用官方方法:
$('#click-on-me').click(function() { $(".loadIframe").modal('show'); }) // 监听模态框完全显示的事件,再加载iframe $(".loadIframe").on('shown.bs.modal', function() { const $iframe = $('#frame-top-dt'); $iframe.attr('src', $iframe.data('src')); })
3. 排查跨源策略限制
Chrome 115加强了跨源嵌入的安全检查,打开开发者工具(F12)查看Console和Network标签:
- 如果Console有跨域相关报错,检查目标PHP页面的响应头,确保设置了合适的
Cross-Origin-Embedder-Policy和Cross-Origin-Opener-Policy,允许当前页面嵌入。 - Network标签如果没有请求记录,说明请求被浏览器拦截,优先排查安全策略问题。
4. 临时禁用Chrome懒加载特性(排查用)
Chrome 115默认开启了iframe懒加载特性,可能导致隐藏iframe无法加载。可以在地址栏输入chrome://flags/#lazy-frame-loading,将选项设为Disabled,重启Chrome测试。如果问题解决,说明是该特性导致的,后续可以等待Chrome修复或调整代码适配。
内容的提问来源于stack exchange,提问作者An Nguyen
相关产品推荐
相关产品推荐

