Почему IE7-JS запрашивает файлы CSS из моего приложения?
-
04-10-2019 - |
Вопрос
Я пытаюсь использовать библиотеку IE7-JS, чтобы заставить мои браузеры меньше, чем IE9, думают, что они IE9. Библиотека размещена здесь:
http://code.google.com/p/ie7-js/
И я ссылаюсь на него следующим образом на моем главном странице:
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
Поскольку я представил этот файл, мой структурный контроллер контроллера - определен здесь:
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
try
{
if (controllerType == null) return base.GetControllerInstance(requestContext, controllerType);
return ObjectFactory.GetInstance(controllerType) as IController;
}
catch (System.Exception xpt)
{
// The controller for path '/WSOD-layout-page.css' was not found or does not implement IController.
// The controller for path '/layout-header.css' was not found or does not implement IController.
// The controller for path '/layout-content.css' was not found or does not implement IController.
// The controller for path '/component-leaderboard.css' was not found or does not implement IController.
// etc...
}
}
}
ловит следующую ошибку:
System.Web.HttpException: The controller for path '/component-page-title.css' was not found or does not implement IController.
Но это не только это - я получаю аналогичную ошибку для каждого файла CSS, который я ссылаюсь. Почему это будет так?
Чтобы уточнить, эти файлы CSS размещаются на другом домене, чем у меня, над которым я работаю. Будет ли это проблема?
Почему CSS-запросы будут направлены на мое приложение? Мне интересно, если это то, что я могу предотвратить / работать?
Обновлять:
Я отправил это как ошибку разработчику. Отчет об ошибках здесь: http://code.google.com/p/ie7-js/issues/detail?id=284.
Решение
Ну, файл скрипта IE7-JS пытается получить эти файлы с вашего сервера, чтобы сделать некоторые работы над ними.
Глядя на скрипты здесь (да, я знаю, что это не IE9, но это было первое не сжатое я видел):
http://code.google.com/p/ie7-js/source/browse/version/2.0(beta)/src/ie8.js.
Вы можете увидеть, что он пытается загрузить эти файлы CSS (строку 1170). Я думаю, что система увидит эти запросы файлов CSS как действие для перехвата и бомбардирует на нем, потому что он не может этого понять, и поэтому это бомбардирует на контроллере.
Я не уверен, почему ASP.NET MVC смотрит на них как действие (Get / Post). Но я надеюсь, что это поможет.
Другие советы
Чтобы уточнить, эти файлы CSS размещаются на другом домене, чем у меня, над которым я работаю. Будет ли это проблема?
Когда Райан упомянул код на 1170 году, пытается определить путь к файлам CSS. По какой-то причине он предполагает, что они находятся в том же домене, поэтому я бы рассмотрел его ошибкой / особенностью IE9.JS. В конце концов эти два метода вызываются, которые, кажется, усекают домен с пути:
var RELATIVE = /^[\w\.]+[^:]*$/;
function makePath(href, path) {
if (RELATIVE.test(href)) href = (path || "") + href;
return href;
};
function getPath(href, path) {
href = makePath(href, path);
return href.slice(0, href.lastIndexOf("/") + 1);
};