【问题标题】:Resolving JS Syntax Error on Mobile Safari Browser in Odoo 12解决 Odoo 12 中移动 Safari 浏览器上的 JS 语法错误
【发布时间】:2020-02-26 09:15:23
【问题描述】:

错误:SyntaxError:字符串与预期的模式不匹配。

浏览器: Safari(仅限移动设备)
文件类型: .js
此部分错误: if ( a.matches(rulesCache[r].selector)) {

非常感谢您查看此代码以帮助我确定问题。

 var css = [];
var style;
a.matches = a.matches || a.webkitMatchesSelector || a.mozMatchesSelector || a.msMatchesSelector || a.oMatchesSelector;
for (r = 0; r < rulesCache.length; r++) {
    if (a.matches(rulesCache[r].selector)) {
        style = rulesCache[r].style;
        if (style.parentRule) {
            var style_obj = {};
            var len;
            for (k = 0, len = style.length ; k < len ; k++) {
                if (style[k].indexOf('animation') !== -1) {
                    continue;
                }
                style_obj[style[k]] = style[style[k].replace(/-(.)/g, function (a, b) { return b.toUpperCase(); })];
                if (new RegExp(style[k] + '\s*:[^:;]+!important' ).test(style.cssText)) {
                    style_obj[style[k]] += ' !important';
                }
            }
            rulesCache[r].style = style = style_obj;
        }
        css.push([rulesCache[r].selector, style]);
    }
}

【问题讨论】:

  • 你找到并回答了吗?我在 Safari 和 Odoo 12 上具有相同的行为

标签: jquery syntax-error mobile-safari odoo-12


【解决方案1】:

我们仍然没有找到错误的来源(在错误 rulesCache[r].selector == "@page" 上),但为了避免这种情况,我们放置了这样的 try/catch:

for (r = 0; r < rulesCache.length; r++) {
        try {
            let matchRule = a.matches(rulesCache[r].selector);
            if (matchRule) {
                style = rulesCache[r].style;
                if (style.parentRule) {
                    var style_obj = {};
                    var len;
                    for (k = 0, len = style.length; k < len; k++) {
                        if (style[k].indexOf('animation') !== -1) {
                            continue;
                        }
                        style_obj[style[k]] = style[style[k].replace(/-(.)/g, function(a, b) { return b.toUpperCase(); })];
                        if (new RegExp(style[k] + '\s*:[^:;]+!important').test(style.cssText)) {
                            style_obj[style[k]] += ' !important';
                        }
                    }
                    rulesCache[r].style = style = style_obj;
                }
                css.push([rulesCache[r].selector, style]);
            }
        } catch (e) {
            console.warn("Can't process selector: " + rulesCache[r].selector, e);
            continue;
        }
    }

希望这对你有用。 最好的问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2011-10-23
    相关资源
    最近更新 更多