如果iframe的内容来自不同的域名,由于同源策略的限制,无法直接修改iframe内部样式。

但是,可以通过以下方法间接修改iframe内部样式:

  1. 使用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;
  }
});
  1. 使用window.parent访问父页面:在iframe内部,可以通过window.parent访问父页面,并修改父页面的样式。

iframe内部示例:

var parentBody = window.parent.document.querySelector('body');
parentBody.style.backgroundColor = 'red';

需要注意的是,这种方法要求iframe和父页面必须同源,否则会因为同源策略的限制而无法访问父页面

iframe 修改内部样式跨域了 如果修改 iframe 修改内部样式

原文地址: https://www.cveoy.top/t/topic/iN4P 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录