引导-Internet Explorer-路由参数问题


Bootstrap - Internet Explorer - issue with route parameters

我有几个页面在Mozilla和Chrome中运行良好,但在IE8中运行不好。有了responsd.js,大多数问题都解决了。然而,当有参数传递到页面时,问题就会出现(页面以移动模式显示;占用整个页面宽度,导航栏折叠为图标栏)。但这种情况仅在编辑模式下发生(id作为参数传递)。

例如,我有一个用户注册页面,它可以在两种模式下工作(新建和更新)。对于更新,它使用相同的视图,并附上用户详细信息

这是两条路线。第一个用于新模式,第二个用于编辑模式。

Route::get('test', function() {
return View::make('test');
});
Route::get('test/1', function() {
return View::make('test');
});

这是测试页。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="description" content="Main Layout">
  <link rel="stylesheet" href={ { asset( "/css/bootstrap.min.css") }} />
  <script src="/js/jquery-1.11.1.js"></script>
  <!--[if lt IE 9]>
        <script src="js/respond.min.js"></script>
        <![endif]-->
</head>
<body>
  <div class="wrap col-md-13">
    <!-- Wrap all page content here -->
    <nav>
      <div class="col-md-12">
        <div class="nav navbar" style="background-color:black;">
          <div class="navbar-header pull-left">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
              <span class="icon-bar" style="background-color:red;"></span>
              <span class="icon-bar" style="background-color:red;"></span>
              <span class="icon-bar" style="background-color:red;"></span>
            </button>
          </div>
          <div class="collapse navbar-collapse">
            <ul class="nav navbar-nav pull-right">
              <li class="stft-menu-item"><a href="/">Home</a>
              </li>
              <li class="stft-menu-item"><a href="/">About</a>
              </li>
              <li class="stft-menu-item"><a href="/">Contact</a>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </nav>
  </div>
</body>
<script src="/js/bootstrap.min.js"></script>
</html>

现在,当我在新模式下使用第一条路由进行测试时,一切都很好。

http://localhost/test

但问题出现在以下方面。

http://localhost/test/1

有什么意见吗?

<!--[if lt IE 9]>
    <script src="js/respond.min.js"></script>
<![endif]-->

这需要更改为/js/respond.min.js(注意前导斜杠)。目前,当您查看http://localhost/test/1 URL时,该文件引用将不起作用。或者,您也可以(应该)使用{{ asset('js/respond.min.js') }}函数。asset()函数将为您的文件生成正确的URL(就像您将其用于CSS文件一样)。

EDIT:您还链接了两次jQuery,这是不必要的,我认为其中只有一个引用有效。

保留这个(但将其移动到<head></head>标签内:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

删除这个:

<script src="/js/jquery-1.11.1.js"></script>

编辑2:为什么此更改可以解决问题

有两种方法可以链接到文件(JS、CSS、Image和其他页面——哪种类型无关紧要)。

相对链接

例如js/respond.js

如果没有前导斜杠,浏览器将创建一个相对于当前URL的链接。在您的情况下,当您查看http://example.com/test时,链接js/respond.js被假定为http://example.com/js/respond.js(这是正确的)。

但是,当您查看http://example.com/test/1时,浏览器会假定一个相对于当前路径的URL。这意味着链路js/respond.js被假定为http://example.com/test/js/respond.js(这是错误的)。

如果要查看http://example.com/admin/user/test/1,则假定的URL为http://example.com/admin/user/test/js/respond.js

绝对链接

例如/js/respond.jshttp://www.example.com/js/respond.js

前导斜线告诉浏览器它是一个绝对链接,应该使用完整的URL作为链接的基础来生成链接。这允许你从域上的任何URL链接文件,它就会知道目录是http://example.com/js/respond.js

在所有URL上使用前导斜杠的风险在于,它假设您的网站在域的根目录中运行。如果你将来把你的网站移到一个子目录(可能是用于开发或暂存环境),那么你的链接将不再工作。这就是为什么使用asset()帮助程序是个好主意。此函数将在您的链接前面加上文件的完整路径asset('js/respond.js')。它将在所有页面上正确生成URL http://www.example.com/js/respond.js