iframe 修改内部样式跨域了 如果修改 iframe 修改内部样式
如果iframe的内容来自不同的域名,由于同源策略的限制,无法直接修改iframe内部样式。
但是,可以通过以下方法间接修改iframe内部样式:
- 使用postMessage进行通信:在主页面中,使用postMessage方法向iframe发送消息,然后在iframe内部监听消息并执行相应的样式修改操作。
主页面示例:
var iframe = document.getElementById('myIframe');
iframe.contentWindow.postMessage({ type: 'changeStyle', data: { color: 'red' } }, '*');
iframe内部示例:
window.addEventListener('message', function(event) {
if (event.data.type === 'changeStyle') {
var iframeBody = document.querySelector('body');
iframeBody.style.color = event.data.data.color;
}
});
- 使用window.parent访问父页面:在iframe内部,可以通过window.parent访问父页面,并修改父页面的样式。
iframe内部示例:
var parentBody = window.parent.document.querySelector('body');
parentBody.style.backgroundColor = 'red';
需要注意的是,这种方法要求iframe和父页面必须同源,否则会因为同源策略的限制而无法访问父页面
原文地址: https://www.cveoy.top/t/topic/iN4P 著作权归作者所有。请勿转载和采集!