Почему скрипт не работает в IE и Safari?

230
29 июля 2018, 00:00

Есть сайт который работает на chrome, mozilla, opera. А в IE и safari выдает ошибку в этом файле

jquery-1.10.2.min.js

...
globalEval: function(t) 
{
  t && x.trim(t) && (e.execScript || function(t) 
  {
    e.eval.call(e, t)  // строка 192
  })(t)
},
...

IE

SCRIPT1003: Предполагается наличие ':'

Файл: jquery-1.10.2.min.js, строка: 192, столбец: 9

safari

jquery-1.10.2.min.js:192 SyntaxError: Expected an identifier but found '(' instead

UPD Попробовал заменить jquery-1.10.2.min.js на jquery-3.3.1.js

safari

// Replace/restore the type attribute of script elements for safe DOM manipulation
function disableScript( elem ) {
    elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; // строка 5622
    return elem;
}

jquery-3.3.1.js:5622 TypeError: 'undefined' is not a function (evaluating 'elem.getAttribute( "type" )')

UPD В globalEval в параметре t передается такой скрипт

View
(
    "TotalsInfoView",
    {},
    (
        function()
        {
            var p =
            {
                init: function(config)
                {
                    this._config = config;
                    this._super("totalsInfoView");
                    this._total1Label = new TextView("textField totalLabel", config.total1Label, 0, 4);
                    this._total2Label = new TextView("textField totalLabel", config.total2Label, 0, 4);
                    this._total10 = new MTextView("textField total0", 0, 4, "totalCur", 100000);
                    this._total20 = new MTextView("textField total0", 0, 4, "totalCur", 100000);
                    this.addChild(this._total1Label);
                    this.addChild(this._total10);
                    this.addChild(this._total2Label);
                    this.addChild(this._total20);
                    this._total10.curType(config.curType);
                    this._total10.noCo(config.noCo);
                    this._total20.curType(config.curType);
                    this._total20.noCo(config.noCo);
                    this.setZIndex(111);
                    positionFields.call(this);
                },
                updateTotal1(value) 
                {
                    this._total10.mValue(value);
                    positionFields.call(this);
                },
                updateTotal2(value) {
                    this._total20.mValue(value);
                    positionFields.call(this);
                }
            };
            function positionFields()
            {
                var self = this;
                setTimeout
                (
                    function () 
                    {
                        self._total1Label.x(118);
                        self._total10.setPosition(self._total1Label.x() + self._total1Label.getWidth() + 10, 4);
                        self._total2Label.x(self._total10.x() + self._total10.getWidth() + 30);
                        self._total20.setPosition(self._total2Label.x() + self._total2Label.getWidth() + 10, 4);
                    },
                    0
                );
            }
            return p;
        }
    )
    ()
);

UPD Весь функционал еще не заработал но в этой точке ошибки уже нет, после исправления updateTotal1(value) на updateTotal1: function(value) аналогично и updateTotal2

Answer 1

Я предлагаю сбойную функцию изложить в следующей редакции:

/ Replace/restore the type attribute of script elements for safe DOM manipulation
function disableScript( elem ) {
if(elem.nodeType == undefined)
  return;
if(elem.nodeType != 1)
  return;
elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
return elem;
}
READ ALSO
Использование LAN в приложениях

Использование LAN в приложениях

Есть несколько компов которые объединены одной локальной сетью через маршрутизаторКаждый из них должен отправлять данные на один комп

187
ASP.NET TCP прослушивание

ASP.NET TCP прослушивание

Можно ли слушать TCP порт в ASPNET web rest API проекте?

182