문제

나는 내부에서 단일 및 이중 인용문을 피하는 데 문제가 있습니다. hrefs JavaScript 함수.

이 JavaScript 코드가 안에 있습니다 href. 같아요 -

<a href = "javascript:myFunc("fileDir/fileName.doc", true)"> click this </a>

이제 이중 인용문 내부의 이중 인용문은 유효하지 않기 때문에 문자열의 일부로 취급되기 위해 내부 이중 인용문을 피해야합니다. 따라서이를 수행해야합니다.

<a href = "javascript:myFunc(\"fileDir/fileName.doc\" , true)"> click this </a>

문제는 위의 코드조차 작동하지 않는다는 것입니다. JavaScript 코드가 잘린다 - myFunc(

나는 단일 견적 변형도 시도했지만 그조차도 작동하지 않는 것 같습니다 (문자열 문자 내에 단일 견적이 있으면 코드가 잘립니다).

이것이 제가 단일 인용문으로 한 일입니다.

<a href = 'javascript:myFunc("fileDir/fileName.doc" , true)'> click this </a>

이것은 작동하지만 문자열 내부에 단일 견적이 있으면 코드가 이중 인용문과 같은 방식으로 잘립니다.

도움이 되었습니까?

해결책

인용문을 피하기 위해 Backslashes를 사용하는 것은 JavaScript에서 작동하는 방법이지만 실제로 JavaScript 코드를 작성하지는 않습니다. HTML을 작성하고 있습니다. HTML 이스케이프 방법 인 캐릭터 엔티티를 사용하여 수행 할 수 있습니다.

&quot;  // "
&#39;   // '

예를 들어:

<a href="javascript: alert('John O&#39;Brien says &quot;Hi!&quot');">...</a>

다른 팁

일반적인 모범 사례로서 HTML에서 이중 인용물과 JavaScript의 단일 품목을 사용하십시오. 그것은 당신의 대부분의 문제를 해결할 것입니다. JavaScript 문자열로 단일 쿼트가 필요한 경우 '를 사용하여 탈출 할 수 있으며 아마도 그보다 더 깊은 문자열을 중첩하지 않아야 할 것입니다.

다른 곳에서 언급했듯이, 코드가 HTML에 포함 된 경우 HTML 엔티티가 가능합니다. 그러나 여전히 JavaScript 소스 파일의 문자열에서 인용문을 피해야하므로 JavaScript를 다루기위한 일관된 전략을 갖는 것이 가장 좋습니다.

이 전략을 따르고 HTML에 내장 된 JavaScript에 내장 된 이중 쿼트로 끝나면 HTML 엔티티 만 사용하십시오. "

누구나 다음과 같은 것을 피해야하는 경우 :

<a href="www.google.com/search?q="how+to+escape+quotes+in+href""</a>

이중 인용구에는 ASCII 코드를 사용할 수 있습니다 %22:

<a href="www.google.com/search?q=%22how+to+escape+quotes+in+href%22"</a>

PHP의 JavaScript 링크를 전달하는 경우 특히 유용합니다.

일반적으로 이러한 종류의 코드는 문제없이 작동합니다.

<a href="#" onclick="myFunc('...')">Click this</a>

이 코드를 사용하면 문제가 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top