jQuery-javascript错误-cisco web vpn

jQuery-javascript错误-cisco web vpn,javascript,error-handling,Javascript,Error Handling,我有一个非常独特的情况 我们在工作中使用Cisco Web VPN(不知道确切名称) 如果我尝试使用我开发的网页,javascript就会崩溃 我已经追踪到了这一点: 当使用Cisco Web VPN时,它实际上会重写一些HTML/JavaScript代码。 例如,在源代码的一开始,它就卡住了以下内容: <script id='CSCO_GHOST' src="/+CSCOL+/cte.js"></script> 这直接位于开始标记之后(而不是标记内部) 在源代码

我有一个非常独特的情况

我们在工作中使用Cisco Web VPN(不知道确切名称)

如果我尝试使用我开发的网页,javascript就会崩溃

我已经追踪到了这一点:

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

<script  id='CSCO_GHOST' src="/+CSCOL+/cte.js"></script>

这直接位于
开始标记之后(而不是
标记内部)

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

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

关于如何抑制此错误或解决此问题,您有什么想法吗?

我把我的
标签放在
中,然后把它们移到
的底部,这两个地方都没有区别

更新:
再看一看,它就是jQuery中的一些东西。我注释掉了jQuery的
标记,错误没有发生。未注释,错误又出现了。

我也遇到了这个问题。对于Cisco来说,像这样重写JS代码真是一团糟,假设它可以在web上的每一个代码上工作。有一些严重的不可逆转的后果,比如范围丢失,会把一切搞砸。谁会以“安全”的名义这么做?是什么阻止我们重写他们注入的JS代码呢?

这就是我要解决的问题。我使用以下代码在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; };
      };    
   };
if(分段HTML的类型!=“未定义”){
SegmentHtmlParam.prototype['filter']=函数(){
var name=null;
var值=null;
对于(var i=1;i
这是我在HTML文件中包含的第一个javascript文件。

<script type="text/javascript" src="js/jQueryCiscoKludge.js"></script>


具体错误是什么?也许可以通过某种方式解决。它们有以下代码:name.toLowerCase(),name为null。我想我应该说抛出的错误是:name未定义。在调用toLowerCase()之前,他们没有检查这一点。顺便说一句,我希望您的IT部门已经升级,因为
cte.js
包含允许远程跨站点脚本攻击的缺陷。出于好奇,您是否正在尝试使用jquery.js的打包版本?一些扫描器/etc发现packer压缩的JS是特洛伊木马。如果是这种情况,请使用.min.js版本(缩小,不打包),这正是我要做的,以解决错误,覆盖他们自己的函数之一。hobbyman,你能详细说明覆盖哪个函数吗?它们似乎在很多地方损坏了jQuery,您如何知道要修复哪一个?谢谢顺便说一句,如果没有使用IE8中的新调试器,我将无法找到这个bug。FireBug从未捕捉到此错误,但IE8调试器捕捉到了。