jQuery - javascript错误 - cisco web vpn

Lan*_*rry 8 javascript error-handling

我有一个非常独特的情况.

我们在工作中使用Cisco Web VPN(不知道具体名称).

如果我尝试使用我开发的网页,javascript就会被破坏.

我跟踪到了这个:

使用Cisco Web VPN时,它实际上会重写一些HTML/JavaScript代码.例如,在源头的最开始,它已经卡住了以下内容:

<script  id='CSCO_GHOST' src="/+CSCOL+/cte.js"></script>
Run Code Online (Sandbox Code Playgroud)

这是在<html>开始标记之后(而不是在<head>标记内).

在那个源cte.js里面,有一个错误.该错误导致jQuery无法正常运行.cte.js是思科产品的一部分,完全不受我的控制.

我知道如何使用windows.onerror捕获错误,但这不适用于这种情况.在将脚本加载到页面之前发生错误.

关于如何抑制此错误或解决此类问题的任何想法?

我把<script>标签放在了<head>底部,然后将它们移到了底部,<body>两个地方都没有区别.

更新: 再看一下,它是jQuery中的东西.我注释掉了<script>jQuery 的标签,但没有发生错误.没有注释,错误又回来了.

Lan*_*rry 1

这就是我必须做的来解决这个问题。我在我的 web 项目中创建了一个 JS 文件,代码如下:

   if ( typeof SegmentHtml != "undefined" ) {
      SegmentHtmlParam.prototype['filter'] = function() {
         var name = null;
         var value = null;
         for (var i = 1; i < this._tokens.length; i++) {
            var token = this._tokens[i];
            if (token.type === ATTR_NAME) {
               name = csco_g_buffer.substring(token.first_index, token.last_index).toUpperCase();
            } else if (token.type === ATTR_VALUE) {
               value = csco_g_buffer.substring(token.first_index, token.last_index);
            };
         };
         var need_processing = false;
         if (ParserClsidName) {
            var tmp = ParserClsidName[this._clsid];
            if (tmp) {
               var proc = tmp[name];
               need_processing = typeof proc != 'undefined';
            };
         };
         /**
         * ERROR ON NEXT LINE: name is null
         */
         if (name!=null && name.toLowerCase() == "csco_proto") {
            this._parent['csco_proto'] = value;
         };
         if (need_processing) { this._parent[name] = value; };
      };    
   };
Run Code Online (Sandbox Code Playgroud)

这是我包含在 HTML 文件中的第一个 javascript 文件。

<script type="text/javascript" src="js/jQueryCiscoKludge.js"></script>
Run Code Online (Sandbox Code Playgroud)