2008-12-04 66 views
0
<document.write("<SCR"+"IPT TYPE='text/javascript' SRC='"+"http"+(window.location.protocol.indexOf('https:')==0?'s':'')+"://"+gDomain+"/"+gDcsId+"/wtid.js"+"'><\/SCR"+"IPT>"); 

我需要以整个事情添加到一个StringBuilder但到目前为止,我必须失去了一些东西逃脱上面的字符串,因为串端接不正确...C#StringBuilder的 - 如何逃离这个字符串:

+0

没有更多的代码,很难知道你的问题是什么。 – 2008-12-04 10:18:47

回答

4
string x = @"<document.write(""<SCR""+""IPT TYPE=""'text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");"; 

@前缀让逃逸变得更简单。你只需要将每个“变成”“

如果你将JavaScript存储在外部文件中,你会发现你的程序更容易维护我假设你正在使用StringBuilder,所以你可以混合一些常量脚本?几个动态值,你可以把它写在一个文件中,但把逃逸喜欢本作的动态值:

var fromCSharp = {0}; 

然后在运行时,加载JS文件,并给它的String.format作为格式字符串,沿使用值替换每次出现的{0},{1}等。您只需从文件中加载一次格式字符串并将其保存起来。

另外,如果要插入JavaScript的值本身是字符串文字,则需要根据JavaScript的语法将其转义。

+0

从外部文件运行脚本尚未工作到目前为止,它是特别不推荐在脚本本身... 我最初的想法实际上只是插入一个小脚本标记链接到外部JS文件,但可惜...不工作 – noesgard 2008-12-04 11:43:44

0

我认为你在混合什么是JavaScript和什么是C#。你能告诉我们你的字符串,你正在努力实现串...

例如

window.location.protocol.indexOf('https:')JavaScript

但据推测

gDomaingDcsId

变数从您的C#方法

也许这:

"<SCRIPT TYPE='text/javascript' SRC='"+"http"+"(window.location.protocol.indexOf('https:')==0?'s':'')"+"://" + gDomain + "/"+ gDcsId+ "/wtid.js"+"'></SCRIPT>") 
0

在开头的字符串我想究竟是什么......(我不是混合了C#的JavaScript - 我只是需要一个字符串在C#StringBuilder的增加,通过coincidance包含一些JavaScript)

它是一个外部脚本,我必须放在一个页面上,使用StringBuilder(出于各种原因)。

我不知道如果用于脚本的任何变化将使其失败,所以我必须将它当作是......

这只是1号线总脚本的,但大多数其他线路我已经设法逃脱正确和它们包含通缉......

+0

道歉,我误解了这个问题:D – inspite 2008-12-04 10:56:53

6

你应该尝试这样的事:

@"<document.write(""<SCR""+""IPT TYPE='text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");" 

当前缀字符串字面量@,唯一的转义需要的是双倍的“卡拉科特。

希望得到这个帮助。

+0

似乎工作:o)也将测试其他线路 您是否添加“@”和双倍所有“的? – noesgard 2008-12-04 10:35:33