javascript - React - 如何将 CSS 样式应用于 iframe 内容

标签 javascript html css reactjs iframe

在 React 应用程序中,如何将 CSS 样式应用于 iframe 加载的 src 内容?

我有一个加载外部内容的应用程序,但样式确实过时了,我想覆盖它。

示例如下:(请注意,我用一些虚拟数据替换了 src<iframe/> 内容,但是,问题仍然相同。

import React from "react";
import ReactDOM from "react-dom";

import "./styles.css";

class Frame extends React.Component {
  componentDidMount() {
    document
      .querySelector("iframe")
      .contentWindow.document.querySelector("h1#firstHeading").style.color =
      "red";
  }
  render() {
    return (
      <iframe
        title="How Can I overwrite the styles from the src content?"
        src="https://en.wikipedia.org/wiki/Herbie_Hancock"
        width="90%"
        height="500px"
        scrolling="no"
      />
    );
  }
}


function App() {
  return (
    <div className="App">
      <Frame />
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

这是一个 code sandbox说明我的问题。

在沙箱示例中,我想更改 h1#firstHeading颜色为 red .

最佳答案

通常,您会使用 JavaScript 执行此操作:

document.querySelector('iframe').contentWindow.document.querySelector("h1#firstHeading").style.color = "red";

但是,跨源 iframe 不允许这样做。

Error: Blocked a frame with origin "..." from accessing a cross-origin frame.

关于javascript - React - 如何将 CSS 样式应用于 iframe 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54116282/

相关文章:

javascript - 从Ajax请求中一一获取结果

html - 将图像包裹在 a 标签中,但仅在文本上有下划线

javascript - 在控制台上绘制 HTML5 Canvas

css - 在 CSS 中覆盖继承的 h1 和 h3 值

css - 为什么当我不关注输入时,这个 CSS3 转换不起作用? ( :focus)

javascript - Debug模式下 Chrome 控制台中的编程步骤

javascript - Sequelize 如何检查数据库中是否存在条目

javascript - 在 JavaScript 中创建队列并在匿名函数中访问全局变量

javascript - 使用 CSV 或 JS 文件填充 HTML 表中的特定 TD

css - Sass 指令 mixin、include、= 和 +