一、base用于定义页面链接的打开方式

  <base target="_blank"/> 定义页面链接默认打开方式,base通过target属性告诉浏览器如何打开页面。

  • _blank,在新窗口显示目标网页
  • _parent,框架网页中当前整个窗口位置显示目标网页
  • _self,在当前窗口显示目标网页
  • _top,框架网页中在上部窗口中显示目标网页

 

二、base用于URL的基础定位

  <base href=""/> 定义页面用于URL的基础定位
  <base>标签可以为整个页面定义所有链接的基础定位,主要作用是为了确保文档中的所有相对定位URL都可以被分解成正确的文档地址,使文档本身被移动或重命名的情况下也可以正确的解析,当这些元素进行跳转时,都会基于当前目录加上这个默认的URL(相对路径的情况下)再加上自己的href属性值来跳转。

 

***  <base>标签对页面中元素href为绝对路径的元素是不起作用的,但是绝对链接必须是完整的,否则还是会被base影响到

三、<base>标签的坑

在使用base标签的页面,需要使用相对路径的地方,比如说锚链接,或者a标签跳转到其他页面会被影响到。这样就很麻烦。
我尝试写了一段代码用于在需要使用相对链接或者锚链接的页面:

 function getByClass(oParent,sClass){
var aEle = oParent.getElementsByTagName('*');
var aResult = [];
var re = new RegExp('\\b'+sClass+'\\b','i'); for(var i=0;i<aEle.length;i++){
if(re.test(aEle[i].className)){
aResult.push(aEle[i]);
}
}
return aResult;
} function getUrl(obj){
var loadHref = window.location.href;
var baseHref = loadHref.substring(0,loadHref.lastIndexOf("/")) + '/';
var toHref = obj.getAttribute("href");
var indexA = loadHref.lastIndexOf("#");
var indexB = toHref.lastIndexOf("#", 0);
var href = null; if (indexB >= 0) {
if(indexA>0){
href = loadHref.substring(0,loadHref.lastIndexOf("#")) + toHref;
}else{
href = loadHref + toHref;
}
} else {
href = baseHref + toHref;
} return href;
}

 

 <div id="myTest" class="test-wrap">
<a id="myTestL" href="#toTest" class="changeWay">锚链接</a>
<a id="myTestR" href="jump.html" class="changeWay">跳转</a>
</div>

 

var Doc = document;
var aChngs = getByClass(Doc,'changeWay'); for(var i=0;i<aChngs.length;i++){
aChngs[i].setAttribute('href',getUrl(aChngs[i]));
}

  * 使用jQuery的话,引入jQuery文件的时候需要使用绝对路径来引用,免得被base影响到,这样就可以;

 

 function GetMaoUrl(obj){
var loadHref = window.location.href;
var baseHref = loadHref.substring(0,loadHref.lastIndexOf("/")) + '/';
var toHref = obj.attr('href');
var indexA = loadHref.lastIndexOf("#");
var indexB = toHref.lastIndexOf("#", 0);
var href = null; if (indexB >= 0) {
if(indexA>0){
href = loadHref.substring(0,loadHref.lastIndexOf("#")) + toHref;
}else{
href = loadHref + toHref;
}
} else {
href = baseHref + toHref;
} return href;
}
$('.changeWay').each(function (){
$(this).attr('href',GetMaoUrl($(this)));
})

  

 ps:作为一个菜鸟,水平实在有限,遇到这个问题之后向很多人请教,结果得到的大多建议是放弃使用base。我觉得存在就是有价值的,可能有更好的方法由于自己的眼界所限看不到,所以如果您有更好的解决方案或者对上述代码有优化建议请不吝赐教;

01HTMl-<base>标签的更多相关文章

  1. HTML <base> 标签 为页面上的所有链接规定默认地址或默认目标

    定义和用法 <base> 标签为页面上的所有链接规定默认地址或默认目标. 通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白. 使用 <base& ...

  2. HTML <base> 标签

    定义和用法 <base> 标签为页面上的所有链接规定默认地址或默认目标. 通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白. 使用 <base& ...

  3. 【27前端】base标签带有href属性会让chrome里的svg元素url失效

    一个chrome的问题,但具体原因不明. 触发条件:chrome浏览器base标签里href属性有值的时候 触发问题:svg里面的元素如果有用url的滤镜和模糊,则会失效,在firefox里和IE10 ...

  4. html5权威指南:html base标签

    html base标签:http://www.cnblogs.com/yuepeng/archive/2010/08/30/1812498.html

  5. jsp base标签与meta标签学习小结

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  6. HTML中<base>标签的正确使用

    HTML <base> 标签 1.  定义:<base> 标签是 HTML 语言中的基准网址标记,是一个单标签. 2.  作用:规定页面上所有链接的默认 URL 和默认目标. ...

  7. HTML(八)HTML meta标签&base标签

    HTML meta元素 标签(meta-information)用于提供页面有关的元数据,除了提供文档字符集.使用语言.作者等基本信息外,还涉及对关键词和网页等级的设定.通过设置不同的属性,元数据可以 ...

  8. Base标签小记:更改当前页面的地址

    一般来说,H5游戏的部署,index.html和代码资源都会放在同一个地址下然后使用iFrame导入到需要加载游戏的页面即可. 但是今天游戏项目部署遇到了一个问题,游戏自己的访问页面(index.ht ...

  9. html的base标签

    提示:请把 <base> 标签排在 <head> 元素中第一个元素的位置,这样 head 区域中其他元素就可以使用 <base> 元素中的信息了. 注释:如果使用了 ...

  10. base标签

    我们扒取到网站源码很多时候发现路径是采用相对路径,这时候我们就需要采用base标签了,用法非常简单, <base href="我们扒取网站的域名"/> 这时相对路径就相 ...

随机推荐

  1. java使用freemarker导出复杂的excel表格

    正常导出excel表格使用的poi,但是导出复杂的excel有点困难,但是可以使用freemaker模板来导出复杂的excel. 1.都是先生成一个Excel表格的模板,最好是增加一行数据.具体看图里 ...

  2. c++ Initialization

    c++ 的初始化过程比较复杂:根据对象的storage duration来分类.所谓storage duration是对象而言的,Storage duration is the property of ...

  3. 编程开发之--Oracle数据库--存储过程使用动态参数绑定(3)

    1.动态参数绑定,可以实现动态的执行不同的sql --创建包 create or replace PACKAGE MYPACKAGE AS type empcursor is ref cursor; ...

  4. Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务

    Celery 分布式任务队列快速入门 以及在Django中动态添加定时任务 转自 金角大王 http://www.cnblogs.com/alex3714/articles/6351797.html ...

  5. Windows操作系统的发展简介

    一.简介    Microsoft Windows,是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用, ...

  6. 股神 C++

    题目描述 有股神吗? 有,小赛就是! 经过严密的计算,小赛买了一支股票,他知道从他买股票的那天开始,股票会有以下变化:第一天不变,以后涨一天,跌一天,涨两天,跌一天,涨三天,跌一天...依此类推. 为 ...

  7. gdb调试工具常用命令

    编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main gdb中命令: 回车键:重复上一命令 (gdb)help:查看命令帮助,具体命令查询在gdb中输入help ...

  8. nginx常用配置3

    ## 六.浏览器本地缓存配置 语法:expires 60 s|m|h|d ```动静分离效果: server { listen 80; server_name localhost; location ...

  9. git多账户使用

    由于公司和个人分别有git账号,而git客户端在默认情况下是只能使用一个账号,如果需要使用多个账号,需要额外的设置. 1. 不使用全局设置,使用如下清除全局设置 git config --global ...

  10. SQL Server 2005 中的分区表和索引

    SQL Server 2005 中的分区表和索引 SQL Server 2005          69(共 83)对本文的评价是有帮助 - 评价此主题   发布日期 : 3/24/2005 | 更新 ...