2008-12-04 67 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