HTML中的base标签使用详解

  发布时间:2013-04-24 09:50:40   作者:佚名   我要评论
在requireJS中,有一个属性叫baseURL,通过设置baseURL,我们可以将需要加载的文件路径写成相对于项目的,而不是相对于当前页面的

在requireJS中,有一个属性叫baseURL,通过设置baseURL,我们可以将需要加载的文件路径写成相对于项目的,而不是相对于当前页面的。

例如:假设我们的项目目录是/myproject/,里面有两个页面,一个是/myproject/one.html,另一个是/myproject/html/other.html,他们都要加载/myproject/js/some.js。如果我们将baseURL设置成/myproject/,则我们在加载该js的时候,这两个页面都可以使用相对于项目的路径./js/some,而不是因为页面的路径不同而使用不同的相对路径。

但是如果不使用requireJS,我们能不能实现类似于baseURL的功能呢?

base标签
其实,HTML中有一个base标签,可以产生类似的功能。举个例子:

复制代码
代码如下:

<html>
<head>
<base href="http://static.cnblogs.com/" />
</head>
<body>
<img src="./images/logo_gray.gif" />
</body>
</html>

我们会发现,我们用相对路径./images/logo_gray.gif加载的图片,却变成了http://static.cnblogs.com/images/logo_gray.gif的图片。

base标签可以给页面的链接加上默认的路径,或者默认的打开方式。

下面是一个设置默认打开方式的例子:

复制代码
代码如下:

<html>
<head>
<base target="_blank" />
</head></p> <p><body>
<a href="http://www.cnblogs.com">这个页面会在新窗口打开</a>
<a href="http://justany.cnblogs.com">这个页面也会在新窗口打开</a>
</body>
</html>

一个BUG
base标签最好不要动态写入,否则在Firefox和IE中会有一个小bug,比如对于页面http://localhost/static/test.html:

复制代码
代码如下:

<html>
<head>
<script>
document.write('<base href="http://localhost/" />');
</script>
</head></p> <p><body>
<img src="static/1.jpg" />
</body>
</html>

Firefox和IE中会先加载http://localhost/static/static/1.jpg,然后再加载http://localhost/static/1.jpg。也就是说,他们都先尝试用相对于当前页面的路径进行加载,然后再通过base标签设置的默认路径加载。

Chrome的加载正常。

Firefox的加载不正常。

 

Why?

这个我们并没有找到很好的解释,我们的分析是浏览器对资源加载进行了优化,导致动态插入base标签并未生效时,就预先去加载了,结果出错,然后base标签生效于是又加载正确的资源。

 

如何避免呢?不动态写入base标签那么就没有任何问题。如果需要动态写入base标签,那么页面所有引用的外部资源都需要通过Javascript动态加载。

相关文章

  • 我的css框架——base.css(重设浏览器默认样式)

    有自己css框架在网页布局过程中会显得相当容易,本文提供的是本人的经验之谈主要功能在于重设浏览器默认样式,热爱布局的你可千万不要错过了哈,希望可以帮助到你
    2013-03-19
  • HTML5本地存储之Database Storage应用介绍

    实际上,除了sessionStorage和localStorage外,HTML5还支持通过本地数据库进行本地数据存储,HTML5采用的是"SQLLite"这种文件型数据库,该数据库多集中在嵌入式设备上,熟
    2013-01-06
  • HTML5 Web Database 数据库的SQL语句的使用方法

    本文将详细介绍HTML5 Web Database 数据库的SQL语句的使用方法,需要了解的朋友可以参考下
    2012-12-09
  • HTML5教程之html 5 本地数据库(Web Sql Database)

    HTML5的Web SQL Databases(html5 本地数据库)的确很诱惑人,当你发现可以用与mysql查询一样的查询语句来操作本地数据库时,你会发现这东西挺有趣的。今天,我们一起来了
    2014-04-03
  • Web数据存储浅析 Cookie、UserData、SessionStorage、WebSqlDatabase

    浅析Web数据存储-Cookie、UserData、SessionStorage、WebSqlDatabase 的使用方法。
    2010-08-06
  • html 基底网址标记

    它的作用就是定一个全局的样式。 那你后面的相对路径会以这个为基准: <img src="logo.gif" /> 会变成 <img src="http://www.jb51.net/logo.gif
    2009-04-08
  • 基链接标签base的使用介绍

    当点了链接后,跳出的网页地址是http://www.webjx.com/web/或http://www.webjx.com/css/,它就是在这些相对路径的文件前加上基链接指向的地址。如果目标文件中的链接没有指
    2008-10-17
  • CSS标准:vertical-align属性

    原文:http://www.mikkolee.com/13 最近几天仔细研究了一下vertical-align这个属性,结果让我大吃一惊,这个很“资深”的CSS标准竟然在各个浏览器里面的表现
    2008-10-17

最新评论