JavaScript删除不起作用的特殊字符串
我正在尝试删除可能出现在我的Google Analytics标签中的特殊字符,因为这些特殊字符似乎会导致IE某些版本中的脚本错误。我有以下功能: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代码:
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"/>