Я использую jsio (jslibs - http://code.google.com/p/jslibs/wiki/jsio) и нахожусь в ошибке на Safari. Неожиданный токен '='JS Ошибка в Safari: Неожиданный токен '='
Проблема с этой частью кода.
this.debugPath = function(path) { return path; }
// IE6 won't return an anonymous function from eval, so use the function constructor instead
var rawEval = (typeof eval('(function(){})') == 'undefined')
? function(src, path) { return (new Function('return ' + src))(); }
: function(src, path) { var src = src + '\n//@ sourceURL=' + path; return window.eval(src); };
// provide an eval with reasonable debugging
this.eval = function(code, path, origCode) {
......................
Проблема, кажется, в той строке, где rawEval
время его назначения. Комментируя это, ошибка переместилась в другое место. Кто-нибудь сталкивался с этой проблемой раньше?
Помощь?
Спасибо.
'function (src, path) {var src = src ...}' может быть ошибкой. Вы используете 'src' один раз, чтобы объявить локальную переменную, но это не локальная переменная. Вы просто переписываете формальный параметр с тем же именем. –
Btw, 'new Function (...)' связывается в глобальной области, тогда как в ES3 'window.eval' связывается в области вызова, поэтому эти два не эквивалентны. Один из способов обойти проблему IE6 eval состоит в том, чтобы добавить строку '" 0, "' к тексту выражения, который вы оцениваете. –
@MikeSamuel: Вы имеете в виду следующее? Пробовал, но не работал. 'вар rawEval = функция (ЦСИ, путь) {' ' \t возвращение Eval ("0" + ЦСИ + '\ п // @ sourceURL =' + путь),' ' };' – Navneet