VirtualBox ограничивает размер файла .js, который может быть включен из общей папки?

Этот вопрос может принадлежать SuperUser, но я все равно попробую его здесь, потому что, полагаю, некоторые веб-разработчики могут столкнуться с этим странным поведением.

При тестировании сайта для совместимости с IE8/winXP на VirtualBox я запускаю странную проблему $ is undefined, которая вызвана тем, что jQuery (и jQuery UI) не включается, когда ссылается на относительный путь, который разрешает file:/// URL-адрес. По-видимому, потому, что их размер был слишком большим (выше 200 КБ).

Просто заменив ссылки на эти 2 больших файла на http://, я решил проблему для меня.

Но вот вопрос: почему это произошло?

это неправильная конфигурация? Жук? известное дизайнерское решение?

Подробнее:

  • VirtualBox 4.1.8
  • host os: win7 64bit, guest os: xp sp3 32 бит
  • добавлены гостевые дополнения, страница запущена из общей папки VB.
  • ошибка проявлялась во всех браузерах (даже в опере, которая игнорирует настройки безопасности, afaik)
  • т.е. конфигурация по умолчанию
  • script был включен следующим образом:
1 ответ

Первый вопрос: в какой зоне IE используется при загрузке этого HTML файла? Посмотрите в нижнем правом углу окна IE на что-то вроде "Мой компьютер" или "Локальная интрасеть". Несмотря на то, что этот вопрос присутствует в других браузерах, мне любопытно узнать, что IE видит вашу общую папку как.

Это больше похоже на проблему с браузером, а не на VirtualBox, что-то смешное. IE довольно ограниченный в отношении файлов://URI в наши дни, как и другие браузеры в разной степени...

Делают ли другие .js файлы загруженными на соответствующей странице или они тоже заблокированы? Что относительно старых версий jQuery, которые намного меньше (например, v1.3.2)?

Есть ли причина, по которой вы загружаете их из общего ресурса файла, а не из веб-сервера? Получаются ли те же результаты, если вы скопируете все файлы с общего диска в гостевой c:\drive?

Как насчет перехода на VirtualBox 4.1.12? Я сомневаюсь, что это будет иметь значение, но это может стоить того.

Последняя мысль состоит в том, что jQuery имеет несколько вызовов, которые могут вызвать IE (и, возможно, другие), чтобы заблокировать script - в частности, вызов new ActiveXObject. Возможно, создайте небольшой файл .js, чтобы попытаться выполнить это как проблему. Вдоль тех же строк - что произойдет, если вы создадите мусор, хотя и законный .js файл, большой - скажем, 400K чего-то вроде:

var a = "... really, really long string";
var b = "... another really long string";
...

licensed under cc by-sa 3.0 with attribution.