`
Classicning
  • 浏览: 255713 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

由target属性说开

    博客分类:
  • WEB
阅读更多

前两天毅博客上有一篇介绍详解target和rel属性的文章《详解链接的rel与target》,我读过之后有一种茅塞顿开的感觉。


曾几何时(就是去年的这个时候),我印象中是web标准刚刚火起来没有多久,一个很让人不能接受的现实问题出现了。target属性已经不在xhtml1.0 strict的DTD中了,一时间很多人为此苦恼。因为抛弃target是不可想象的,而保留它则意味着不能将那一小小的光荣的xhml1.0 strict图标放在自己网页上显摆。


于是就诞生了这么一种发法,用上rel属性,把值设为external(rel有没有这个值还很难说)。然后在window.onload的时候用js遍历整个文档中的a,如果找到rel,则在DOM中加上target="_blank",代码大约是如下吧:

function addTarget(){
  var anchors = document.getElementsByTagName("a");
  for(var i=0;i<anchors.length;i++){
    var anchor = anchors[i];
    if("external" == anchor.getAttribute("rel")){
      anchor.setAttribute("target","_blank");
    }
  }
}

这么一来既实现了既骗过验证,又有blank效果,我的静态主页里用的就是这种方法,现在虽然很鄙视,但是没有时间去搞他了。扯远了。


那么我们看一看为什么target被弃用了。
两方面,一是UE的方面。传说新开窗口是一件及其危险的事情,可能导致很多不可知事件的发生,轻则(我想大家都经理过)死机,重则出现什么危险也不是不可能。关于UE我不想多说,因为UE是个缥缈的概念,即便是你通过了508的验证,你的网站也不见得是对每一个用户都友好的(我敢说没有target的UE是更加垃圾的)。但是值得一说的是,这方面诞生了一个不错的例子,就target="window_name"。给新窗口起一个名字。这样今后打开外部窗口时就可以自由选择是新开,还是在已有的外部窗口打开。这样做大大地增加了页面作者对页面的控制能力,也不会造成到处都是新窗口的局面。比较典型的网站就是第二书店的图书搜索到图书浏览的链接和毅博客首页的链接。我想这也是target能够做到的UE的极致了,尽管如此,target还是不符合标准。


那么为什么呢,我们要从标准的更深层次来看target。W3C发布网页标准的目的是为了规范当时混乱的局面,以提高网页的可访问性,保证对各种UA的兼容从最普通的IE到FF,到手机上的浏览器,到传说中的文字浏览器、声音浏览器等等。这样target的地位受到了严重的挑战。因为有些浏览器根本不支持框架,框架被W3C弃用,于是target的很多属性值_parent,_self也随之退出历史舞台。而在一些手机等UA上,根本就没有_blank这么一回事,所以在一定程度上又为target降低了分数。
W3C的网页标准让网页越来越像是一个文档,它本身具有极强的层次性、可读性,标题、列表、段落等等,这些似乎都和传统的文档要素完全吻合。而那些最终必须服务于浏览器的属性呢,W3C将它们尽可能抽象,比如alt,比如title,甚至比如未来的rel;同时,原本过于具体的width,height等就理所当然地遭到了弃用。某种程度上说,抽象意味着低耦合。其实从这一方面上来说,网页标准其实仅仅迈出了小小的一步,未来的路还长。


最后我还要阐释这么一个观点:“写自己的html,让浏览器去解析吧!”
当然,如过你是真正的从业者,你肯定无法做到这么豁达,你要为cross-browser浪费掉一天有一天。但是W3C一定是这么认为的,或许他们不敢承认。
网页,我们只能做到html,之后怎样把html展现成图形就不是我们所能负责的了。其实,哪个网页设计师关心文档的样子啊,绝大多数人在乎的都是浏览器窗口里的模样,这才是为什么我们WYSIWYG。那么现在html有W3C的标准了,但是解析html有标准吗?有事实标准,约定俗成,但是没有书面文稿和详细规定。
于是M$的IE把alt属性解析到tip里,害苦了一代热衷网页设计的青少年;同样的size=12的密码框和文本框,IE6就是把它解析得一大一小,你有什么办法?这些都完完全全地脱离了我们所能控制的范围,css和js都对它无能为力,标准更是鞭长莫及。
Web标准通过浏览器来执行,所以浏览器们有决定权,而W3C也不可能因此将IE6的那群开发者告上法庭要他们赔偿全球网页设计制作者的青春损失费。
那么我们是做标准还是做网页呢,或者说是为标准做还是为浏览器做呢,我想大家都应该心知肚明。

如果你是做网页,那么就大胆地用target;如果你仅仅为了获得标准验证通过的图标,那就坚决地弃用target,好好写accesskey,tabindex和rel吧!没有什么对与错,就比如你要找工作,那么就应该学习一些实际的本事,掌握真正能创造价值的能力;如果要考验,嘿嘿,您还是埋头读那些课本吧,好好受“教育”。

而我同样可以yy未来会有一种完全自定义的浏览器——当target已经为广大标准FQ唾弃的时候——自动在新窗口打开rel="external"的链接。


分享到:
评论

相关推荐

    target属性 .doc

    HTML 中 target 属性的使用和解释 target 属性是 HTML 中的一个重要属性,它指定所链接的页面在浏览器窗口中的打开...target 属性的使用可以帮助开发者更好地控制链接的打开方式,以便提高用户体验和页面的可读性。

    HTML a 标签的 target 属性.doc

    HTML `&lt;a&gt;` 标签中的 `target` 属性用于指定在何处打开由 `href` 属性定义的链接文档。该属性提供了多种选项来控制链接文档的加载方式,包括在新窗口打开、在当前窗口打开或在特定框架内打开等。 #### 二、基本用法...

    Ant常见属性解析--target

    下面将详细解析Ant中的"target"属性及其相关知识。 首先,Ant脚本通常以`&lt;project&gt;`元素开始,其中包含了多个`&lt;target&gt;`元素。每个`&lt;target&gt;`都代表了一个特定的构建阶段,比如编译、测试、打包或者部署。`&lt;target&gt;...

    struts中base标签的target属性

    ### Struts 中 base 标签的 target 属性详解 #### 引言 在 Web 开发领域,Struts 是一个非常流行的 Java 框架,它主要用于构建基于模型-视图-控制器(MVC)设计模式的应用程序。Struts 的一大优势在于其强大的标签...

    JavaScript获得表单target属性的方法

    为了更好地控制表单数据的提交方式,我们常常需要操作表单的target属性。JavaScript作为一种客户端脚本语言,提供了强大的功能来操作HTML元素,包括表单元素。本文将详细介绍如何使用JavaScript获得表单的target属性...

    html标签a的target属性的用法

    1:如果使用标签来链接到一个页面的话,target属性的作用,相信大家都知道。就是指对链接的页面以怎么样的形式展现出来,target常用的值有:_blank(以新弹出一个浏览器窗口打开链接的页面)、_self(在原来的窗口中...

    ExcelVBA实例教程020:工作表事件Target参数的使用方法.pdf

    Excel VBA 工作表事件 Target 参数的使用方法 在 Excel VBA 中,工作表事件的 Target 参数是指触发工作表事件的区域。该参数可以用来限制工作表事件的触发范围,提高代码的灵活性和可读性。 在 SelectionChange ...

    关于网站target标准

    下面我们将详细探讨`target`属性的使用方法及其在不同场景下的应用。 1. `_self`:这是`target`的默认值,表示链接将在当前窗口或标签页内打开。适用于大多数内部链接,如导航菜单、频道链接、产品线介绍等,这样...

    对target="framename"的理解(实现分页的demo)

    `target`属性的使用可以帮助我们控制浏览器窗口或框架如何处理链接的目标页面。在这个“对target="framename"的理解(实现分页的demo)”中,我们将深入探讨`target`属性以及如何利用它来实现分页功能。 首先,`...

    用好href的target属性

    ### 用好`href`的`target`属性 在网页设计与开发中,合理利用超链接的`target`属性能够显著提升用户体验,并实现更为复杂的页面交互功能。`target`属性通常用于规定在何处显示被链接文档的目标窗口或框架。本文将...

    HTML利用超链接打开链接文件的方法介绍

    用法如下: 链接的显示文字点击&lt;a&gt;&lt;/a&gt;... 比如链接到jb51.net站点首页,就可以这样表示: 多特软件站jb51.net首页&lt;/a&gt;target属性使用target属性,可以在一个新窗口里打开链接文件。 &lt;ahref=https://www.jb51.netta

    android webview 因iframe+target=“_blank “ 导致的页面无法正常打开或获取不到调整url

    而`target="_blank"`属性则指示链接在新窗口或者新标签页中打开,而非当前页面或iframe内。在Webview中,`target="_blank"`通常会导致链接无法在当前WebView中正常打开,因为它期望的是一个新的浏览器实例,而不是在...

    html超级链接标记A的TARGET属性详解

    TARGET属性用于控制链接在哪个窗口或框架中打开。以下是一些常见的TARGET值及其含义: 1. **`_blank`**:在新的浏览器窗口中打开链接,这是最常见的用法之一。示例: ```html &lt;a href="example.html" target="_...

    html的frameset和target的应用

    HTML中的`&lt;frameset&gt;`和`target`属性是构建网页布局和导航的重要工具,它们允许开发者将一个网页分割成多个独立的区域,并控制链接在这些区域间的打开方式。本篇文章将详细探讨这两个概念以及它们在实际应用中的用法...

    frameset框架中target的使用

    #### target属性的作用 `target`属性主要用于`&lt;a&gt;`标签中,用来指定链接打开的目标窗口。当用户点击带有`target`属性的链接时,该链接指向的页面将加载到指定的`&lt;frame&gt;`中,而不是在新的浏览器窗口中打开。 `...

    打开链接,在新窗口还是同一窗口

    如果想要在新窗口或标签页中打开链接,可以使用`target`属性。`target`属性有以下几个值: 1. `_self`:这是默认值,表示在当前框架或窗口中打开链接。大多数情况下的链接都是这样处理的。 2. `_blank`:指示浏览器...

    如何在HTML中创建打开新窗口的链接

    本文将详细解释如何使用target属性以及JavaScript来创建这样的链接,并提供相关的代码示例。 通过使用target属性或JavaScript,你可以轻松地在HTML中创建打开新窗口的链接。记得总是考虑用户体验和安全性,比如添加...

    用javascript来控制 链接的target 属性的代码

    找到要实现新开窗口的 `&lt;a&gt;` 标签,并修改其 `target` 属性值为 "_blank"。 完整的代码为: `function externalLinks() {` ` if (!document.getElementsByTagName) return;` ` var anchors = document....

    关于Ajax与iframe及target的问题

    当涉及到Ajax和iframe的交互时,`target`属性可以控制Ajax请求的结果在哪个框架内显示。 具体到Ajax与iframe的结合使用,一个常见的场景是实现无刷新的表单提交。例如,你可以创建一个iframe作为Ajax请求的目标,...

Global site tag (gtag.js) - Google Analytics