jQuery和/或markItUp!按住CTRL键时窒息

jQuery和/或markItUp!按住CTRL键时窒息,jquery,markitup,Jquery,Markitup,我继承了公司的网站和一个匆忙拼凑起来的CMS。今天我得了第一个虫子,我被难倒了 CMS使用markItUp!,我以前从没听说过。问题是:每当有人在受影响的文本区域中键入CTRL字符时,jQuery就会抛出一个可爱的语法错误,无法识别的表达式:[CTRL字符]异常 我在看那个标记!按键功能,在这种情况下,我不知道它会如何工作。要使用快捷键,您必须在快捷键之前加上CTRL键,但按下CTRL键后将始终触发,在集合中找不到CTRL键,因此在Sizzle.filter中出错 在文本区域处于焦点的情况下按C

我继承了公司的网站和一个匆忙拼凑起来的CMS。今天我得了第一个虫子,我被难倒了

CMS使用markItUp!,我以前从没听说过。问题是:每当有人在受影响的文本区域中键入CTRL字符时,jQuery就会抛出一个可爱的
语法错误,无法识别的表达式:[CTRL字符]
异常

我在看那个标记!按键功能,在这种情况下,我不知道它会如何工作。要使用快捷键,您必须在快捷键之前加上CTRL键,但按下CTRL键后将始终触发,在集合中找不到CTRL键,因此在
Sizzle.filter
中出错

在文本区域处于焦点的情况下按CTRL键,然后:

//jquery.markitup.js

    function keyPressed(e) { 
       shiftKey = e.shiftKey;
       altKey = e.altKey;
       ctrlKey = (!(e.altKey && e.ctrlKey)) ? e.ctrlKey : false;

       if (e.type === 'keydown') {
          if (ctrlKey === true) {
             //Line below attempts to find an anchor tag with accesskey CTRL character
             li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li');
             //SNIP
          }
       }
    }


    //jquery-1.5.js

    Sizzle.filter = function( expr, set, inplace, not ) {
       var count = 0;
       var match, anyFound,
          old = expr,
          result = [],
          curLoop = set,
          isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );

       //expr = the CTRL character, set = the markItUp! default set
       while ( expr && set.length) {
          for ( var type in Expr.filter ) {
             if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
                //SNIP
             }
          }

          // Improper expression
          if ( expr === old ) {
             if ( anyFound == null ) {
                Sizzle.error( expr );
             } else {
               break;
             }
          }

          old = expr;
       }
       return curLoop;
    };

    Sizzle.error = function( msg ) {
       throw "Syntax error, unrecognized expression: " + msg;
    };

我在这里遗漏了什么?

对我来说,只有在新版本的jQuery(1.7.1)中才会出现这种情况。如果我使用1.4.2,它不会报告任何错误。无论我使用哪种浏览器。

此版本中的jquery 1.5兼容性修补程序已修复了此问题

补丁中的相关行是:

-            li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li');
+            li = $('a[accesskey="'+String.fromCharCode(e.keyCode)+'"]', header).parent('li');

听起来您的选择器表达式有语法错误-请尝试检查此选择器正在创建的字符串:
$([accesskey=“+string.fromCharCode(e.keyCode)+“]”,header)
我同意这一观察结果。然而,如果是这样的话,那么为什么它对其他所有人都有效呢?这不是我写的——这是markItUp代码库的一部分。浏览器的区别?报告错误的浏览器版本是否与您测试的浏览器版本不同?你能重现这个错误吗?它是在IE8中报告的,我正在运行IE8和FireFox 6。两种浏览器都存在相同的问题。