2016-11-08 47 views
0

我已经使用pug作为视图来表达。我的index.pug具有以下内容:如何在express + jade/pug中添加字符串脚本标记

script(type='text/javascript'). 
     window.__DATA__ = !{payload} 

其中有效负载是json对象。已字符串化快递的渲染功能:

res.render('index', { 
    payload : JSON.stringify({ 
     "anExample": "<script></script>" 
    }) 
}) 

当我的JSON对象有</script>便早早结束我window.__DATA =功能由于结束script标签。我怎样才能防止这个炸掉我的页面?这是帕格或Express或浏览器的限制吗?

+0

特伦斯,你看看我的答案吗? – Cerbrus

回答

0

询问解决方案后,是使用stringify库,而不是使用提供的JSON.stringify函数。

具体而言,我使用了npm模块js-stringify,它将<字符更改为unicode,除了对json进行字符串化。因此,它可以插入像帕格这样的模板引擎。帕格然后可以用!{my_stringified_json}来避开它。由于它不会将unicode恢复到原来的状态,所以json最终不是它的unicode等价物而是'anExample: '<script></script'>

0

你将不得不“分解”包含脚本标签的字符串。

像这样的东西应该工作:

"anExample": "<script></scr" + "ipt>" 

这样,</scr" + "ipt>不会被解释为关闭脚本标签。

+0

这不是一个可行的解决方案,因为要为脚本标记正则表达式并将字符串拆分很困难。注意我使用的是嵌套的json,因此在深度嵌套的json中删除脚本标签会变得更加恼人。我会为我所做的事提供答案 –

相关问题