Во-первых, я убежден, что это тривиальный вопрос, но я не могу понять, почему это происходит, и я не мог найти ответ нигде. Я искал свою проблему с небольшим успехом, но если я что-то пропустил и просто потратил ваше время, пожалуйста, укажите мне в правильном направлении и примите мои скромные оправдания.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» (который я не писал и не связывал напрямую).
Это действительно интересно :) –
Некоторые сценарии переопределяют 'Math.random'. Попробуйте удалить другие теги '
Другая библиотека на вашей странице переопределяет объект
Math
. Это одна из причин, по которым загрязняет. Глобальное пространство имен неодобрительно.Для справки
Math
должен возвращать следующиеисточник
2015-03-16 08:59:56 jasonscript
Я нашел еще одну ситуацию, которая может привести к тому, что это произойдет.Я преобразование функции PHP в функцию JS, и я имел следующую строку:
Изменение его
решить проблему
источник
2016-05-04 21:17:07 Mark
Это действительно не имело ничего общего с проблемой. 'Math.random()' явно функция JavaScript, и она должна продолжать работать почти всегда. –
Так или иначе, NotScript был автоматически установлен в мой браузер Chrome на Ubuntu 16.04. Это вставляет скрипт, который вы показываете в своем обновлении сразу после тега
<html>
.Мне нужно было перейти к настройкам, посмотреть расширения, отключить NotScripts, а затем перезапустить Chrome, чтобы он исчез.
В Ubuntu, это должно быть очень недавно или сценарий был недавно обновлен, потому что я бежал точно такой же тест в Chrome, с теми же сценариями, несколько дней назад, и она работает просто отлично ,
Интересно, похоже, это было removed 2 years ago (ноябрь 2014 г.) и, возможно, недавно добавлено?
источник
2016-11-15 20:46:11