代码之家  ›  专栏  ›  技术社区  ›  DaveDev

为什么IE7JS从我的应用程序请求CSS文件?

  •  0
  • DaveDev  · 技术社区  · 15 年前

    我正在尝试使用IE7JS库来让我的浏览器比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请求被路由到我的应用程序?我想知道这是否是我可以阻止/解决的问题?

    更新:

    我已将此作为Bug提交给开发人员。错误报告如下: http://code.google.com/p/ie7-js/issues/detail?id=284

    2 回复  |  直到 15 年前
        1
  •  0
  •   Ryan Ternier    15 年前

    IE7-JS脚本文件正试图从服务器中检索这些文件,以便对它们进行一些工作。

    看看这里的脚本(是的,我知道不是IE9,但这是我看到的第一个非压缩的脚本):

    http://code.google.com/p/ie7-js/source/browse/version/2.0(beta)/src/IE8.js

    您可以看到它正在尝试加载这些CSS文件(第1170ish行)。我认为系统将这些CSS文件请求视为拦截的一种行为,并在轰炸它,因为它无法理解它,这就是为什么它在轰炸控制器工厂。

    我不知道为什么ASP.NET MVC将它们视为操作(get/post)。但我希望这能有所帮助。

        2
  •  0
  •   Todd Smith Brandon    15 年前

    为了澄清,这些CSS文件托管在不同于我正在处理的域上。这会是问题吗?

    正如Ryan提到的,1170ISH上的代码正试图确定CSS文件的路径。不管出于什么原因,它假设它们在同一个域中,所以我认为这是ie9.js的一个bug/特性。最后,调用这两个方法,似乎会从路径截断域:

    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);
    };
    
    推荐文章