0

Google アナリティクス タグから特殊文字を削除しようとしています。次のスクリプトがありますが、なぜ機能しないのかわかりません。これは、私がほとんど知らない JSP と JavaScript を組み合わせたものです。仕事の勉強で...

                <script type="text/javascript">
                function removeSplChars(inStr) {
                inStr = inStr.replace(/[^a-zA-Z0-9 ]/g, "");
                return inStr;
                }
                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>
                removeSplChars(<c:out value="${topCat}" />, <c:out value="${subCatA}" />, <c:out value="${subCatB}" />, <c:out value="${subCatC}" />);
                 _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>

() か何かが欠けていますか? 「予期しないトークン ;」が表示されます。コンソールのエラー メッセージ。$(document).ready(function() {}); 内に removeSplChars の呼び出しを配置し​​ようとしました。

無駄に。

次の投稿を確認しましたが、アドバイスは役に立ちません: Function is not Call javascript 関数が呼び出されない

ここに別の投稿があります: JavaScript 特殊文字列の削除が機能しない

ありがとうございました。

ソースの表示で表示されるコードの追加:

                <script type="text/javascript">
                function removeSplChars(inStr) {
                inStr = inStr.replace(/[^a-zA-Z0-9 ]/g, "");
                return inStr;
                }       
                var _gaq = _gaq || [];
                _gaq.push(['_setAccount', 'UA-33021136-1']);


                _gaq.push(['_setCustomVar',
                2, // This custom var is set to slot #2.
                'Dine &amp; Entertain', // The top-level name for your online content categories.
                'Dine &amp; Entertain|Bowls &amp; Platters||', // Records value of breadcrumb name
                3 // Sets the scope to page-level.
                ]); 



                $(document).ready(function() {
                removeSplChars(Dine &amp; Entertain, Bowls &amp; Platters, , );
                });
                _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>
4

1 に答える 1

0

渡された文字列removeSplCharsは引用符で囲まれていないため、エラーが発生します。可能であれば、JSONエンコード後に変数を渡す方が信頼性が高くなります。または、それを"回避して、最高のものを期待することもできます(入力のように既にエンコード"している場合&quot;は、正常に機能するはずです)。

さらに、これにより、空の引数で発生している問題が解決されます。代わりに、空の文字列が引数として渡されます。

于 2012-10-05T15:59:10.957 に答える