已获白名单授权,为何无法清除跨域iFrame指定内容?
问题排查方案
代码执行时机不对:这是最大概率的原因。你的移除代码很可能在iframe内容还没加载完就跑了,这时候iframe里的
.footer元素根本还没生成,find('.footer')找不到目标,自然没动作也没报错。解决方式是等iframe加载完成再执行代码:$('.iFrame1').on('load', function() { $(this).contents().find('.footer').remove(); });选择器匹配出错:先核对iframe内部的
.footer类名有没有拼写错误,或者这个元素是不是后期动态生成的(比如靠AJAX渲染出来的)。如果是动态元素,得等它渲染完成再执行移除,或者用MutationObserver监听DOM变化来触发操作。另外也要确认iframe的类名确实是iFrame1,没写错字符。跨域白名单没真正生效:虽说你说已经加了白名单,但可能存在配置延迟或者范围不匹配的情况。打开浏览器控制台的「网络」标签,看看iframe的请求是否正常加载,有没有跨域相关的警告(有些跨域限制不会抛错误,但会出警告)。
iframe文档访问异常:极少数情况,就算白名单生效,iframe的文档也可能无法访问,比如
src指向的资源加载失败,或者文档类型不符合预期。可以先打印console.log($('.iFrame1').contents()),确认能不能正常拿到iframe内部的document对象。
内容的提问来源于stack exchange,提问作者user3394645
相关产品推荐
相关产品推荐

