2015-03-16 2 views
1

Во-первых, я убежден, что это тривиальный вопрос, но я не могу понять, почему это происходит, и я не мог найти ответ нигде. Я искал свою проблему с небольшим успехом, но если я что-то пропустил и просто потратил ваше время, пожалуйста, укажите мне в правильном направлении и примите мои скромные оправдания.Math.random() javascript function * undefined * на Chrome

Это то, что происходит. Я создаю простой скрипт для отображения графика, нарисованного распределенным алгоритмом (giraph), и я работаю над Linux. Я импортирую все библиотеки и, в частности, jQuery, и все работает в Firefox (версия 36.0.1). Переключение на Chrome (версия 41.0.2272.89 (64-разрядная версия)), страница перестает работать. Исследуя этот вопрос, я узнал, что ошибка была внутри jQuery.extend() функции в библиотеку JQuery, в следующей строке:

expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), 

В самом деле, пытаясь вызвать Math.random() в консоль браузера приводит к:

> Math.random(); 
> Uncaught TypeError: Undefined is not a function 

Во всяком случае, при вводе консоли autocompletes переменного «Math», со следующим результатом:

> Math 
> function(){return "";} 

Это не происходит с Chrome на MacOS X Mavericks. Раньше кто-то испытывал подобное поведение?

EDIT: К сожалению, я не думаю, что это конфликт пространства имен. В моей библиотеке я импортирую только одну другую библиотеку (кроме jQuery), которая равна Sigma js. Как было предложено, я написал Math на консоли и попытался понять, какая библиотека переопределила Math (используя «Show Function Definition») со следующим результатом, взятым из файла с именем «VM53» (который я не писал и не связывал напрямую).

+0

Это действительно интересно :) –

+5

Некоторые сценарии переопределяют 'Math.random'. Попробуйте удалить другие теги '

1

Другая библиотека на вашей странице переопределяет объект Math. Это одна из причин, по которым загрязняет. Глобальное пространство имен неодобрительно.

Для справки Math должен возвращать следующие

enter image description here

-2

Я нашел еще одну ситуацию, которая может привести к тому, что это произойдет.Я преобразование функции PHP в функцию JS, и я имел следующую строку:

ticks += "," . Math.floor(yyy * intMax); 

Изменение его

ticks += "," + Math.floor(yyy * intMax); 

решить проблему

+1

Это действительно не имело ничего общего с проблемой. 'Math.random()' явно функция JavaScript, и она должна продолжать работать почти всегда. –

0

Так или иначе, NotScript был автоматически установлен в мой браузер Chrome на Ubuntu 16.04. Это вставляет скрипт, который вы показываете в своем обновлении сразу после тега <html>.

Мне нужно было перейти к настройкам, посмотреть расширения, отключить NotScripts, а затем перезапустить Chrome, чтобы он исчез.

Chromium Extensions showing NotScripts 0.9.6 enabled

В Ubuntu, это должно быть очень недавно или сценарий был недавно обновлен, потому что я бежал точно такой же тест в Chrome, с теми же сценариями, несколько дней назад, и она работает просто отлично ,

Интересно, похоже, это было removed 2 years ago (ноябрь 2014 г.) и, возможно, недавно добавлено?

Смежные вопросы