_blank开新窗体不符合标准?

我们要在新窗体中打开链接通常的做法是在链接后面加target="_blank",我们採用过渡型的DOCTYPE(xh tml1-transitional. dtd)时没有问题,可是当我们使用严格的DOCTYPE(xhtml1-strict.dtd)时,这种方法 将通只是W3C的校验,会出现例如以下错误提示:

"there is no attribute targetfor
this element(in this HTML version)"

原来在HTML4.01/XHTML1.0/XHTML1.1严格DOCTYPE下,target="_blank"、target="_self"等等语法都是 无效的,我们仅仅能通过JavaScript来变通实现。精心开发5年的UI前端框架!

有朋友问为什么不允许使用target="_blank"?这个属性非常方便啊。呵呵,不知道W3C的专家们是怎么想 的,据我所知,主要是“易用性、友好性”的问题,由于老外认为不经过用户允许,没有明白提示就打开一 个新窗体是不礼貌的。先无论这个取消是否合理,我们来看看解决的方法。

rel属性

HTML4.0添加了一个新属性:rel,这个属性用来说明链接和包括此链接页面的关系,以及链接打开的目 标。rel有很多的属性值,比方next、previous,、chapter、section等等。我们要使用的就是rel="externa l"属性。原来这样写的代码:

<a
href="document.html" target="_blank"> 打开一个新窗体</a>

如今要写成这样:

<a
href="document.html" rel="external">打开一个 新窗体</a>

这是符合strict标准的方法。当然还必须配合一个javascript才有效。

javascript

完整的代码JS例如以下:

.代码

  1. function externallinks() {
  2. if (!document.getElementsByTagName) return;
  3. var anchors = document.getElementsByTagName("a");
  4. for (var i=0; i<anchors.length; i++) {
  5. var anchor = anchors[i];
  6. if (anchor.getAttribute("href") &&
  7. anchor.getAttribute("rel") == "external")
  8. anchor.target = "_blank";
  9. }
  10. }
  11. window.onload = externallinks;

你能够把它保存成一个.js文件(比方external.js),然后通过外部联接方法调用:

<script
type="text/javascript" src="external.js"></script>

就是这样。精心开发5年的UI前端框架!

最后补充一句,我站点採用的target="new"在过渡型DOCTYPE下是同意的,但也不符合strict标准。下次 改版时我将採用strict模式,将全部target="new"改成rel="external"。

时间: 2024-10-07 21:56:10

_blank开新窗体不符合标准?的相关文章

_blank开新窗口不符合标准?

我们要在新窗口中打开链接通常的做法是在链接后面加target="_blank",我们采用过渡型的DOCTYPE(xh tml1-transitional. dtd)时没有问题,但是当我们使用严格的DOCTYPE(xhtml1-strict.dtd)时,这个方法 将通不过W3C的校验,会出现如下错误提示: "there is no attribute targetfor this element(in this HTML version)" 原来在HTML4.01/X

Response.Redirect 打开新窗体的两种方法

普通情况下,Response.Redirect 方法是在server端进行转向,因此,除非使用 Response.Write("<script>window.location='http://dotnet.aspx.cc';</script>") 方法外,是不能在新窗体打开所指定的  URL 地址的.可是,假设细致分析一下,假设设置 form 元素的 target 属性,还是有办法打开新窗体的.以下就是能够採用的两种方法. 方法一:在server端设置 targ

开新二手车帮卖,值得肯定的创新

如果您是一位二手车主,您将如何处置您的爱车呢?卖给二手车商还是卖给4S店?又或卖给朋友?另外,您对二手车市场了解吗?知道自己的车该卖多少价格才算公允? 二手车交易市场需求现状   汽车作为大宗消费品,在人们的日常生活中属于比较大的支出.基于对大宗消费品的放心.安全.保值心理,众多消费者在购买的时候通常都会选择具有保障的品牌和商家购买. 基于这样的消费心理,消费者很少会直接与二手车主直接交易,除非是知心朋友介绍的靠谱二手车,否则消费者一般不敢随便购买二手车. 4S店二手车和二手车商存在的意义就在于

Js基础01-打开新窗口(window.open)

JavaScript-打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法:  window.open([URL],[窗口名称],[参数字符串]);  参数说明: URL:可选参数,在窗口中要显示网页的网址或路径.如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档. 窗口名称:可选参数,被打开窗口的名称. 1.该名称由字母.数字和下划线字符组成. 2."_top"."_blank"."_se

支付宝钱包接口开发包2.0标准版接入与使用规则

接入与使用规则 支付宝钱包支付接口开发包 2.0 标准版 附录文档 版本号:1.3 支付宝(中国)网络技术有限公司 版权所有 支付宝钱包支付接口开发包 2.0 标准版附录文档 目录 1 文档说明..............................................................................................................4 1.1 文档说明...............................

android_常用UI控件_01_TextView3_点击打开新的activity

点击textview打开新的activity (1) MainActivity.java package com.example.android_textview_opennewactivity; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.text.SpannableString; import android.text.Spanned;

IsMdicontainer新窗体被父容器包括的设置、Timer控件

IsMdicontainer的设置 这是对于整个窗体的设置,将一个窗体的IsMdicontainer设置为true之后,再打开新窗体便可以让新窗体被父容器包括在内. 操作方法: 1)先建立一个子窗体Child.cs 2)在父容器的按钮里写代码,打开子窗体 Child c = new Child(); //判断窗体是否已经打开,以控制其只能打开一个 int count = 0; foreach (Form f in this.MdiChildren) { if (f.Name == c.Name)

对话框控件 MessageBox.Show()用法补充 打开新窗体的3中模式

(一)对话框控件 1.fontcolor 字体设置 属性:showcolor 可以调节字体颜色 showApply 控制显示应用按钮 例:设置一个文本框,点击按钮,文本框中的颜色字体发生改变 DialogResult dr = fontDialog1.ShowDialog(); if (dr == DialogResult.OK) { //设置文本框中的字体属性 richTextBox1.Font = fontDialog1.Font; //设置文本框中字体的颜色 richTextBox1.Fo

C#-WinForm-打开其他窗体的三种方式-Show()、设置Owner()、ShowDialog()

打开其他窗体的三种方式 Show - 例如登入界面进入主页面,直接将主页面展示出来,两个窗体互不影响 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); } } Show 打开新窗体 Owner - 例如text