【问题标题】:This doesn't happen often: Why is this JavaScript code only broken in Chrome?这不会经常发生:为什么这段 JavaScript 代码只在 Chrome 中被破坏?
【发布时间】:2010-12-01 04:57:31
【问题描述】:

我决定爱上 Stack Overflow 上的 Markdown 编辑器。这是来自 John Fraser 的 showdown.js 的一个分支。我想在我的一个项目上使用这个解析器,但是在分析了源码后,我发现它对我的口味来说有点乱。

于是我着手修改 JavaScript 代码以满足我的需要,即:

  1. 摆脱所有全局变量,
  2. 将变量声明组合到每个作用域的单个 var
  3. 将串联更改为数组连接,
  4. 旨在使缩小的源更小的各种其他调整。

除了一个小问题:command.doList 函数中的自动完成代码在 Chrome 中运行不正常,我的一切工作都很顺利。我已经测试了一切在 Internet Explorer、FireFox 和 Safari 中都能正常工作。我将此事归结为以下几行:

// Get the item prefix - e.g. " 1. " for a numbered list, " - " for a bulleted
// list.
getItemPrefix = function () {
    var prefix;
    if (isNumberedList) {
        // the `s` variable is just a string space.
        prefix = [s, num, '. '].join('');
        num++;
    } else {
        prefix = [s, bullet, s].join('');
    }
    return prefix;
};

// Fixes the prefixes of the other list items.
getPrefixedItem = function (itemText) {
    // The numbering flag is unset when called by autoindent.
    if (isNumberedList === undefined) {
        isNumberedList = /^\s*\d/.test(itemText);
    }

    // Renumber/bullet the list element.
    // THE FOLLOWING LINES COMMENTED OUT TO FIX A BUG.
    //itemText = itemText.replace(/^[ ]{0,3}([\*\+\-]|\d+[.])\s/gm,
        // function () { return getItemPrefix(); });
    return itemText;
};

靠近末尾的两条注释掉的行阻止 Chrome 的行为不正常,但编号列表不再自动递增。一旦我取消注释这些行,所有主要浏览器都开始正常工作,除了 Chrome。 (Chrome 会发疯并使用额外的编号和项目符号自动完成列表,尝试使用无序列表时也会发生这种情况。)

问题显然不存在 here 在 Stack Overflow 上,所以我希望这只是我的一个愚蠢的疏忽。 (无论是那个还是 Stack Overflow 都已经更新并修复了这个错误。)

【问题讨论】:

  • @indieinvader 与两个函数在同一范围内。就在它的正上方是:var getItemPrefix, getPrefixedItem, num = 1;

标签: javascript google-chrome markdown wmd


【解决方案1】:

您可以查看 fix 以获得另一个 WMD 分支(第 32 行)。

【讨论】:

  • 好吧,看看那个。我以为只有我一个人!
【解决方案2】:

您不需要在方括号中反斜杠 *+- 对吧?这可能是 Chrome 遇到的问题。

【讨论】:

  • 至少你不会用其他语言的正则表达式,不确定javascript
  • 嗯。 JSLint 正在和我争论这件事,所以我添加了它。让我在没有它们的情况下试一试。
  • “-”可能会导致中间出现问题,但不会在结尾出现问题。
  • 删除了它们。有同样的行为。在其他浏览器中仍然有效。
猜你喜欢
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多