繁体   English   中英

为什么在运行时添加<script>标记不会加载javascript文件? (with react.js)

[英]Why adding a <script> tag at runtime doesn't load the javascript file? (with react.js)

我有这个react.js脚本,它将以下代码添加到html中

// returned by the render method
React.DOM.div({
    dangerouslySetInnerHTML:  {
        __html: '<script type="text/javascript" async="" src="//myapp.disqus.com/embed.js"></script>'
    }
})

现在我的HTML看起来像:

<script type="text/javascript" async="" src="//myapp.disqus.com/embed.js"></script>

这似乎很完美,但问题是它不加载脚本。 脚本标记插入到正文的中间,嵌套在其他一些div标记中。

可能是什么问题? 谢谢

将脚本标记渲染到带有react的页面是不正确的解决方案 - 我不能让它与JSX一起工作,我认为这同样适用于此。 不知道为什么,但只需添加简单的旧JavaScript方式:

    var script = document.createElement("script");

    script.src = "//myapp.disqus.com/embed.js";
    script.async = true;

    document.body.appendChild(script);

将它放在根组件的componentWillMount中。

我刚刚在我的React应用程序中添加了Disqus。 我使用了'react-disqus-thread'模块,并立即启动并运行。

这是在github上: https//github.com/mzabriskie/react-disqus-thread

和npm: https ://www.npmjs.com/package/react-disqus-thread

该组件采用以下道具:

  • shortname - 这是//myapp.disqus.com/embed.js中的'myapp'
  • 标识符 - 一个唯一的blogId,可以在网址更改时识别您的博客帖子
  • 标题
  • url - 如果你不提供这个,模块将检测网址并提供它。

您测试了哪种浏览器? 如果在脚本标记中使用async =“true”,则不会阻止。 但这只是由几个浏览器支持。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM