【问题标题】:Use third-party embed code in a React component在 React 组件中使用第三方嵌入代码
【发布时间】:2017-04-20 09:12:14
【问题描述】:

我需要为表单使用第三方嵌入代码。我试图在一个组件中返回它,但它显然不起作用。如何设置这个?

class Form extends Component {

  render() {

    return (
      <div>
        <div id="apply_form">
          <a name="form" id="formAnchor"></a>
          <script type="text/javascript" src="https://fs22.formsite.com/include/form/embedManager.js?1605047845"></script>
          <script type="text/javascript">
          EmbedManager.embed({
            key: "key",
            width: "100%",
            mobileResponsive: true
          });
          </script>
        </div>
      </div>
    );
  }
}

export default Form;

【问题讨论】:

    标签: javascript reactjs embed


    【解决方案1】:

    不幸的是,没有一种真正干净的方法来做到这一点,除了进入 DOM 插入外部脚本,然后直接运行嵌入代码。

    我会这样处理:

    class Form extends Component {
    
      componentDidMount() {
        const script = document.createElement('script');
        script.setAttribute(
          'src', 
          'https://fs22.formsite.com/include/form/embedManager.js?1605047845');
        script.addEventListener('load', () => {
          EmbedManager.embed({
            key: "key",
            width: "100%",
            mobileResponsive: true
          });
        });
        document.body.appendChild(script);
      }
    
      render() {
        return (
          <div>
            <div id="apply_form">
              <a name="form" id="formAnchor"></a>
            </div>
          </div>
        );
      }
    }
    
    export default Form;
    

    【讨论】:

    • 非常感谢!这行得通!并为我清理了一切。
    • 我现在有一个问题 - 当我将它添加到页面时导入然后
      控制台显示错误 - 未捕获的类型错误:无法读取属性 'parentNode' of null - 知道为什么?
    • 不知道;它可能特定于此嵌入脚本。您可以尝试交换 addEventListenerappendChild 行;也许它正在尝试读取 &lt;script&gt; 元素的 DOM 定位。
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多