动态地将脚本注入?

时间:2017-02-27 16:04:31

标签: javascript reactjs

在React中,我尝试在加载特定组件时动态添加<script><head>。我之前已将此代码用于类似的事情(使用更简单的脚本):

componentWillMount() {
    var script= document.createElement('script');
    script.src = "SOME_URL";
    document.body.appendChild(script);
}

但我现在尝试注入的代码包含缩小的js(它是Google Analytics内容实验代码),如下所示:

<!-- Google Analytics Content Experiment code -->
<script>function utmx_section(){}function utmx(){}(function(){var
k='XXXXXXXXX-Y',d=document,l=d.location,c=d.cookie;
if(l.search.indexOf('utm_expid='+k)>0)return;
function f(n){if(c){var i=c.indexOf(n+'=');if(i>-1){var j=c.
indexOf(';',i);return escape(c.substring(i+n.length+1,j<0?c.
length:j))}}}var x=f('__utmx'),xx=f('__utmxx'),h=l.hash;d.write(
'<sc'+'ript src="'+'http'+(l.protocol=='https:'?'s://ssl':
'://www')+'.google-analytics.com/ga_exp.js?'+'utmxkey='+k+
'&utmx='+(x?x:'')+'&utmxx='+(xx?xx:'')+'&utmxtime='+new Date().
valueOf()+(h?'&utmxhash='+escape(h.substr(1)):'')+
'" type="text/javascript" charset="utf-8"><\/sc'+'ript>')})();
</script><script>utmx('url','A/B');</script>
<!-- End of Google Analytics Content Experiment code -->

如何将其动态注入<head>

更新:我最终使用了client-side solution

1 个答案:

答案 0 :(得分:1)

如果要将带有src属性的脚本标记添加到 head ,则应使用

var script= document.createElement('script'); script.src = "SOME_URL"; document.head.appendChild(script);

注意文档。,而不是正文

如果你想在里面添加一些脚本标签,请使用

var script= document.createElement('script'); script.text = "CODE"; document.head.appendChild(script);

如果您只需要在页面上运行此代码,则可以使用eval("CODE");其中代码是没有脚本标记的js代码

也许this tool可以帮助逃避

相关问题