【发布时间】:2020-05-25 18:08:27
【问题描述】:
我有一个字符串,比如说 headData,它是 <script>、<style> 和 <link> 标签的组合。对于 Ex(带有虚拟数据)-
let headData = '<style>
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: local('Roboto Light'), local('Roboto-Light'), url(path-to.woff) format('woff');
}</style>
<link rel="dns-prefetch" href="//assets.adobedtm.com">
<script>var isPresent = false;</script>
<script>var isContent = true;</script>
<style>@font-face {
font-family: 'Courgette';
font-style: normal;
font-weight: 400;
src: local('Courgette Regular'), local('Courgette-Regular'), url(path-to.woff2) format('woff2');}</style>'
我将整个 headData 注入到如下标签中。
<script dangerouslySetInnerHTML={{__html: headData}} />
我不想注入像<style>, <link> 标签相关数据这样的HTML 标签,只想注入所有<script> 标签相关数据。有没有一种方法可以使用仅选择<script> 标签的正则表达式来实现这一点。
所以我最终要注入的类似于-
let headData = '<script>var isPresent = false;</script>
<script>var isContent = true;</script>'
在 Javascript 中实现这一目标的正确方法是什么?
【问题讨论】:
-
你想把javascript放在
script标签中还是执行它? -
它将被执行,这只是我在问题中提供的虚拟对象,实际上,我将执行 GTM 和 Adobe 脚本。我只想过滤掉 HTML 标签,只包含
-
我认为过滤是可能的,但我不确定它是否会作为内联脚本执行...因为所有内联脚本在加载时只执行一次
-
如何实现过滤。我确信它会被执行。您可以看到我发布的类似问题,它工作正常。 stackoverflow.com/questions/59947262/…
-
我已经发布了过滤
scripts的代码,检查它是否适合你。
标签: javascript html reactjs styles script-tag