JavaScript Remove special characters string not working

前端 未结 2 1696
深忆病人
深忆病人 2020-12-22 06:44

I\'m trying to remove special characters that could appear within my Google Analytics tags, as the special characters seem to be causing script errors in some versions of IE

相关标签:
2条回答
  • 2020-12-22 07:27

    In a comment I asked you to show us the code where your function removeSplChars was called, and to my surprise you told me that you didn't call it anywhere. Well, that answers the question why nothing has changed. If you don't call the function with the data you want to change, then nothing get changed.

    I'm trying to understand what your problem is, because it shouldn't be a problem... Then I looked closer to your code and spotted this:

    '<c:choose><c:when test="${WCParam.source eq 'search'}">Search <c:out value="${WCParam.searchTerm}" /></c:when><c:otherwise><c:out value="${topCat}" />|<c:out value="${subCatA}" />|<c:out value="${subCatB}" />|<c:out value="${subCatC}" /></c:otherwise></c:choose>'
    

    You should notice that the color coding has made the word search in another color than the rest of the string. This is because you have started the string with a single quote and therefore the string will end at the next single quote.

    I notice that you are using JSP, which I'm not familiar with. I looked it up and saw that these tags are parsed by your server before they are sent to the client, and replaced with some text.

    Since you have problems with special characters like a single quote, the problem is obvious: The string that your tags output isn't escaped to be a part of a javascript string. I think your only problematic characters of all possible Unicode characters is a double quote (u+0022), single quote (u+0027) and backslash (u+005c), because they must be escaped with a backslash (like \", \' and \\)

    Now, how do you do that in JSP? I don't know, but I know that you aren't the first one to have this problem. I quick search gave me this page where they suggest the following:

    <spring:message code="${escapedString}" javaScriptEscape="true"/>
    

    Now, as I said, I'm not familiar with JSP, so I am only guessing. Try to replace all your uses of <c:out value="xxx"/> like this:

    <c:out value="${WCParam.searchTerm}" />
    

    with this:

    <spring:message code="${WCParam.searchTerm}" javaScriptEscape="true"/>
    

    If that doesn't work look at this answer.

    0 讨论(0)
  • 2020-12-22 07:29

    The problem is not the function itself, it comes from somewhere else. Proof: http://jsfiddle.net/wDaCw/

    0 讨论(0)
提交回复
热议问题