JavaScript删除不起作用的特殊字符串

JavaScript删除不起作用的特殊字符串,javascript,jsp,special-characters,analytics,Javascript,Jsp,Special Characters,Analytics,我正在尝试删除可能出现在我的Google Analytics标签中的特殊字符,因为这些特殊字符似乎会导致IE某些版本中的脚本错误。我有以下功能: function removeSplChars(inStr) { inStr = inStr.replace(/[^a-zA-Z0-9 ]/g, ""); return inStr; } 还有目前有效的GA代码:

我正在尝试删除可能出现在我的Google Analytics标签中的特殊字符,因为这些特殊字符似乎会导致IE某些版本中的脚本错误。我有以下功能:

                function removeSplChars(inStr) {
                inStr = inStr.replace(/[^a-zA-Z0-9 ]/g, "");
                return inStr;
                }
还有目前有效的GA代码:

                <script type="text/javascript">
                var _gaq = _gaq || [];
                _gaq.push(['_setAccount', '<c:out value="${profileId}"/>']);
                <c:choose>
                <c:when test="${(lastCmdName eq 'CategoryDisplay') or (lastCmdName eq 'ProductDisplay')}" >
                _gaq.push(['_setCustomVar',
                2, // This custom var is set to slot #2.
                '<c:choose><c:when test="${WCParam.source eq 'search'}">Search</c:when><c:otherwise><c:out value="${topCat}" /></c:otherwise></c:choose>', // The top-level name for your online content categories.
                '<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>', // Records value of breadcrumb name
                3 // Sets the scope to page-level.
                ]); 
                </c:when>
                <c:otherwise>
                </c:otherwise>
                </c:choose>
                 _gaq.push(['_trackPageview']);
                (function() {
                var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
                ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
                })();
                </script>

var _gaq=_gaq | |[];
_gaq.push([''设置帐户','');
_gaq.push([''u setCustomVar',
2,//此自定义变量设置为插槽#2。
'搜索',//联机内容类别的顶级名称。
'Search | | |',//记录面包屑名称的值
3//将范围设置为页面级别。
]); 
_gaq.push([''u trackPageview']);
(功能(){
var ga=document.createElement('script');ga.type='text/javascript';ga.async=true;
ga.src=('https:'==document.location.protocol?'https://ssl' : 'http://www“)+”.google analytics.com/ga.js';
var s=document.getElementsByTagName('script')[0];s.parentNode.insertBefore(ga,s);
})();
但是当我把这个函数放在代码中时,我仍然看到Chrome调试器中出现了特殊字符。例如,当我打开一个页面,页面上有一个名为“Matt's”的产品,它显示为Matt's。我想要的是床垫。我们有其他带有符号和其他特殊字符的产品名称,所以我只想允许A-z和数字(大写/不大写都可以)

如有任何建议,将不胜感激。到目前为止,我已经查看了以下帖子,但还没有发现任何有助于我实现这一目标的内容:




我不熟悉JSP和JavaScript,所以我确信我没有将代码放在正确的位置,或者我需要在页面上添加其他内容?我尝试将removeSplChars函数放在()中或添加一个;没有运气。不幸的是,我必须在工作中学习这一点,因此我必须专注于完成分配给我的任务,而不是花时间真正理解语言的逻辑/语法

问题不在于函数本身,它来自其他地方。证明:

在一条评论中,我要求您向我们展示调用函数
removeSplChars
的代码,令我惊讶的是,您告诉我您没有在任何地方调用它。这就回答了为什么什么都没有改变的问题。如果不使用要更改的数据调用函数,则不会更改任何内容

我想了解你的问题是什么,因为这不应该是个问题。。。然后我仔细查看了您的代码,发现了以下内容:

'<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>'
现在,正如我所说,我不熟悉JSP,所以我只是在猜测。尝试将
的所有用法替换如下:

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

为此:

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


如果这不起作用,请看。

我想我只是没有正确地实施它。你能告诉我应该把函数放在上面粘贴的脚本标签中的什么位置吗?也许它需要一起进入另一个JSP文件…我在锚标记上有另一个带有GA脚本的.JSP;当我将此函数放在该页面上时,它也不会删除特殊字符。向我们显示调用
removeSplChars
的代码。您可以用三元表达式替换内联
c:choose
块。示例:
${WCParam.source eq'search'?'search':'topCat'}
@some,这就是全部问题所在,我不会在任何地方调用它。我完全不懂JavaScript:(我会研究如何调用函数,看看我找到了什么。谢谢。@JasperdeVries,如果输入的“topCat”值是“Patio&Outdoors”的话会有帮助吗?我还会研究三元表达式。对不起,我打错了。
topCat
是一个变量,所以你可以使用
${WCParam.source eq'search'?'search':topCat}
<spring:message code="${WCParam.searchTerm}" javaScriptEscape="true"/>