Giter VIP home page Giter VIP logo

Comments (1)

Foscat avatar Foscat commented on June 23, 2024 7

I figured it out, I took the Hook out of a use effect and placed it inside the onLoad function of the iframe. Then on my website template I put the code into I wrap the incoming JavaScript in a settimout then execute the code and it works for the runtime logs any user click logs.

webTemplateProp

let template = `<!DOCTYPE html>
		<html lang="en">
		<head>
		  <meta charset="UTF-8">
		  <meta name="viewport" content="width=device-width, initial-scale=1.0">
		  <style>${this.state.cssEditorContent}</style>
		</head>
		<body id="body">
		${this.state.htmlEditorContent}
		</body>
    <script>
    setTimeout(() => {
      ${this.state.jsEditorContent}
    }, 250);
		</script>
		</html>`;

React Code

import React, { Component, createRef } from "react";
import { Hook, Console, Decode } from "console-feed";
import SplitPane from "components/SplitPane/SplitPane";

class Ughh extends Component {
  constructor(props) {
    super(props);
    this.state = {
      logs: [],
      contentRef: createRef(),
    };
  }


  render() {
    return (
      <SplitPane orientation="horizontal">
        <iframe
          id="webPreviewFrame"
          title="Web Preview"
          className="editor_console_panel"
          srcDoc={`${this.props.webTemplate}`}
          referrerPolicy="origin"
          width="100%"
          ref={this.state.contentRef}
          onLoad={() => {
            Hook(this.state.contentRef.current.contentWindow.console, log => {
              this.setState(({ logs }) => ({ logs: [...logs, Decode(log)] }))
            });
          }}
        />
        <div
          style={{ backgroundColor: "#242424", height: "100%", width: "100%" }}
        >
          <Console logs={this.state.logs} variant="dark" />
        </div>
      </SplitPane>
    );
  }
}

export default Ughh;

I hope this helps anyone who runs into this issue as I did.

from console-feed.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.