문제

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

StringBuilder에 모든 것을 추가하려면 위의 문자열을 탈출해야하지만 지금까지 문자열 종료가 맞지 않기 때문에 무언가를 놓치고 있어야합니다 ...

도움이 되었습니까?

해결책

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

@ prefix는 탈출을 더 간단하게 만듭니다. 각 "을" "로 바꾸면됩니다.

JavaScript를 외부 파일에 저장하면 프로그램을 유지하기가 훨씬 쉽습니다. 나는 당신이 StringBuilder를 사용하고 있다고 가정하여 몇 가지 동적 값과 상수 스크립트를 혼합 할 수 있습니까? 파일로 쓸 수 있지만 동적 값에 대해 이와 같은 탈출을 넣습니다.

var fromCSharp = {0};

그런 다음 런타임에 js 파일을로드하고 {0}, {1} 등의 각 발생률을 대체하기 위해 값과 함께 문자열로 string.format에 제공합니다. 파일에서 형식 문자열을 한 번만로드하면됩니다. 캐시를 유지하십시오.

또한 JavaScript에 삽입하는 값이 자체 문자 리터럴 인 경우 JavaScript의 구문에 따라 탈출해야합니다.

다른 팁

다음과 같은 것을 시도해야합니다.

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

문자열 문자를 @로 접두사 할 때 필요한 유일한 탈출은 "Caracter를 두 배로 늘리는 것입니다.

이 도움을 바랍니다.

처음의 문자열은 내가 원하는 것입니다 ... (나는 c#과 javaScript를 혼합하지 않습니다 - 나는 c# stringBuilder에 문자열을 추가하면 일치에 따라 일부 javaScript가 포함되어 있습니다).

StringBuilder (여러 가지 이유로)를 사용하여 페이지에 넣어야하는 외부 스크립트입니다.

스크립트의 변경 사항이 실패할지 알 수있는 방법이 없습니다.

총 스크립트의 한 줄에 불과하지만 대부분의 다른 줄은 제가 올바르게 탈출했으며 원하는대로 포함됩니다 ...

나는 당신이 무엇을 혼합하고 있다고 생각합니다 JavaScript 그리고 무엇입니까 C#. 당신이 달성하려는 문자열이라는 문자열을 알려 주시겠습니까?

예를 들어

window.location.protocol.indexOf('https:') ~이다 JavaScript

그러나 아마도

gDomain 그리고 gDcsId

당신의 변수입니다 C# 방법

아마도 :

"<SCRIPT TYPE='text/javascript' SRC='"+"http"+"(window.location.protocol.indexOf('https:')==0?'s':'')"+"://" + gDomain + "/"+ gDcsId+ "/wtid.js"+"'></SCRIPT>")
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top