发送Javascript代码到客户端不能正确转义

我在一个我正在构build的小系统中遇到了一个编码问题。

在HTML中,这个脚本被加载

<script src="http://localhost:8000/serving/dk-711218"></script> 

通常我不能访问HTML,所以一切都必须在JavaScript文件内完成。

服务器端脚本是在Node.js中创build的,它根据可定制的XML文件中的一些设置返回代码段。 例如,当显示图像时,系统返回一个简单的图像

 <img src="mypicture.jpg" /> 

如果是文本,则返回

 <div class="myClass">This is a test</div> 

如果他们有特殊的行为,这个代码也包括在内。

这些部件按预期工作。 这些代码块驻留在许多类中,并根据需要返回,以便逐渐构build代码。

到现在为止还挺好。

问题是返回SWFobject库代码,因为它似乎在运行中损坏代码。

所有的代码已经被转义并且使用encodeURIComponent编码,以便系统只需要解码和unescape。 但validation失败。

以下是编码/转义前几行的示例:

 var%2520swfobject%253Dfunction%2528%2529%257Bvar... 

以下是在访问该页面时,Firefox源代码窗口中的一段SWFObject的样子:

下面是一个解码后的SWFObject在同一个窗口中的样子:

这发生在几个地方,这些事件的共同点是,它看起来像不明原因的小于字符是不同的解释。

这是视图渲染器,我无法弄清楚如果问题是在代码中引起的,或者在渲染代码时。

任何想法是什么导致这种行为? 或者这样包含代码的时候可能会提供一些最佳实践方面的build议?


回应意见:

尝试JSON.stringify

我已经尝试了JSON解决scheme,它也有诀窍! 我所做的就是像以前一样预先处理包含的代码,使用一个我用两个input字段和两个input字段之间的JSON.stringify命令构build的小工具。 这导致了returnvar的内容:

 Module.prototype.opens = function () { var returnvar = "var swfobject=function(){var D=\"undefined\",r=\"object\",S=\"Shockwave Flash\",W=\"ShockwaveFlash.ShockwaveFlash\",q=\"application/x-shockwave-flash\",R=\"SWFObjectExprInst\"... etc. 

并使用JSON.parse在渲染器中再次纠正它:

 router.get('/serving/:id', function (req, res) { var readSymbolicsXMLCallback = function(data) { res.render('index', { id: req.params.id, embedcode: JSON.parse(data) }); } var embedcode = readSymbolicsXML(req.params.id, readSymbolicsXMLCallback); });