在现有窗口中打开新窗口,即target_blank的问题
2007-02-06 16:02
330 查看
在网页中,经常碰到这种情况:点击某些链接,就会弹出新窗口,原来的页面部改变,而有些链接,就在原窗口上打开新的链接,原窗口没有了,被覆盖了。这个是为什么呢?怎么实现的呢?
target=_blank,这个标签,就是解决这个问题的。<base target=_blank>是将基本链接的目标框架都改为新页打开,即弹出新窗口。<a>、<form>等很多标签都支持target="black"的属性,可以在这样的标签里单独做设置,比如:
<a href="xxx.htm" target="_blank">超链接内容</a>
<form action="xxx.htm" target="_blank">表达内容<input type="submit" value="提交按钮"></form>
如果不加这一句,默认均为本页刷新,即target="_self"。还有两个这样的标签,<target=_top>表示在整页窗口打开,<target=_parent>表示在父窗口打开。
<a href="http://www.bookboy.cn/" target="_blank">单独定义,新窗口打开</a>
<a href="http://www.bookboy.cn/" target="_self">单独定义,相同窗口打开</a>
<a href="http://www.bookboy.cn/" target="_top">单独定义,整页窗口打开</a>
<a href="http://www.bookboy.cn/" target="_parent">单独定义,父窗口打开</a>
另外,这只是单独设置,如果有在某个页面上有很多的链接或者form表单,逐一的添加标签会很麻烦,有没有类似批处理的呢?
这就要用到<base target=_xxx> ,这是基本的HTML语言。用<base target=_××>来设置这个网页所有链接的目标窗口。也就是说,网页中只要添加<base target=_××>这句,那么所有的超链接就无须单独设置。最好将这句写在<head>和</head>之间。例如
<base target=_blank>表示网页中所有的超链接的目标地址都在新建窗口中打开。
<base target=_self>表示网页中所有的超链接的目标地址都在原窗口上打开。
当然,这样的标签有时也会碰到麻烦。
1 不符合标准
当我们使用W3C过渡型标准时,即DOCTYPE(xh tml1-transitional. dtd),没有问题,但是使用严格的标准时,即DOCTYPE(xhtml1-strict.dtd),就会出错,错误提示:
"there is no attribute target for this element(in this HTML version)"
原因是,外国人认为,不经过用户同意,就随便打开新窗口,是不礼貌的,不尊重用户的,可参看 http://bbs.chinahtml.com/showthread.php?t=53657
那碰到这种情况时怎么办呢?
HTML4.0增加了一个新属性:rel,这个属性用来说明链接和包含此链接页面的关系,以及链接打开的目 标。rel有许多的属性值,比如next、previous,、chapter、section等等。我们要使用的就是rel="externa l"属性。原来这样写的代码:
[align=left]<a href="document.html" target="_blank"> 打开一个新窗口</a> 现在要写成这样:[/align]
[align=left]<a href="document.html" rel="external">打开一个 新窗口</a> 这是符合strict标准的方法。当然还必须配合一个javascript才有效。[/align]
[align=left]javascript[/align]
[align=left]完整的代码JS如下:[/align]
[align=left]function externallinks() { [/align]
[align=left] if (!document.getElementsByTagName) return; [/align]
[align=left] var anchors = document.getElementsByTagName("a"); [/align]
[align=left] for (var i=0; i<anchors.length; i++) { [/align]
[align=left] var anchor = anchors[i]; [/align]
[align=left] if (anchor.getAttribute("href") && [/align]
[align=left] anchor.getAttribute("rel") == "external") [/align]
[align=left] anchor.target = "_blank"; [/align]
[align=left] } [/align]
[align=left]} [/align]
[align=left]window.onload = externallinks;[/align]
[align=left]你可以把它保存成一个.js文件(比如external.js),然后通过外部联接方法调用:[/align]
[align=left]<script type="text/javascript" src="external.js"></script> [/align]
[align=left]就是这样。[/align]
[align=left]2 浏览器不支持[/align]
[align=left] 有时,使用了上述标签,但是,任旧不见效果,比如使用了target=_blank,却不能弹出窗口,这是因为,有些浏览器被用户设置了,不让弹出窗口,当然这样设置是为了屏蔽广告,因此,这是就无法打开新窗口,知道了原因,解决就很简单了,在浏览器中设置一下就可以了。[/align]
[align=left][/align]
target=_blank,这个标签,就是解决这个问题的。<base target=_blank>是将基本链接的目标框架都改为新页打开,即弹出新窗口。<a>、<form>等很多标签都支持target="black"的属性,可以在这样的标签里单独做设置,比如:
<a href="xxx.htm" target="_blank">超链接内容</a>
<form action="xxx.htm" target="_blank">表达内容<input type="submit" value="提交按钮"></form>
如果不加这一句,默认均为本页刷新,即target="_self"。还有两个这样的标签,<target=_top>表示在整页窗口打开,<target=_parent>表示在父窗口打开。
<a href="http://www.bookboy.cn/" target="_blank">单独定义,新窗口打开</a>
<a href="http://www.bookboy.cn/" target="_self">单独定义,相同窗口打开</a>
<a href="http://www.bookboy.cn/" target="_top">单独定义,整页窗口打开</a>
<a href="http://www.bookboy.cn/" target="_parent">单独定义,父窗口打开</a>
另外,这只是单独设置,如果有在某个页面上有很多的链接或者form表单,逐一的添加标签会很麻烦,有没有类似批处理的呢?
这就要用到<base target=_xxx> ,这是基本的HTML语言。用<base target=_××>来设置这个网页所有链接的目标窗口。也就是说,网页中只要添加<base target=_××>这句,那么所有的超链接就无须单独设置。最好将这句写在<head>和</head>之间。例如
<base target=_blank>表示网页中所有的超链接的目标地址都在新建窗口中打开。
<base target=_self>表示网页中所有的超链接的目标地址都在原窗口上打开。
当然,这样的标签有时也会碰到麻烦。
1 不符合标准
当我们使用W3C过渡型标准时,即DOCTYPE(xh tml1-transitional. dtd),没有问题,但是使用严格的标准时,即DOCTYPE(xhtml1-strict.dtd),就会出错,错误提示:
"there is no attribute target for this element(in this HTML version)"
原因是,外国人认为,不经过用户同意,就随便打开新窗口,是不礼貌的,不尊重用户的,可参看 http://bbs.chinahtml.com/showthread.php?t=53657
那碰到这种情况时怎么办呢?
HTML4.0增加了一个新属性:rel,这个属性用来说明链接和包含此链接页面的关系,以及链接打开的目 标。rel有许多的属性值,比如next、previous,、chapter、section等等。我们要使用的就是rel="externa l"属性。原来这样写的代码:
[align=left]<a href="document.html" target="_blank"> 打开一个新窗口</a> 现在要写成这样:[/align]
[align=left]<a href="document.html" rel="external">打开一个 新窗口</a> 这是符合strict标准的方法。当然还必须配合一个javascript才有效。[/align]
[align=left]javascript[/align]
[align=left]完整的代码JS如下:[/align]
[align=left]function externallinks() { [/align]
[align=left] if (!document.getElementsByTagName) return; [/align]
[align=left] var anchors = document.getElementsByTagName("a"); [/align]
[align=left] for (var i=0; i<anchors.length; i++) { [/align]
[align=left] var anchor = anchors[i]; [/align]
[align=left] if (anchor.getAttribute("href") && [/align]
[align=left] anchor.getAttribute("rel") == "external") [/align]
[align=left] anchor.target = "_blank"; [/align]
[align=left] } [/align]
[align=left]} [/align]
[align=left]window.onload = externallinks;[/align]
[align=left]你可以把它保存成一个.js文件(比如external.js),然后通过外部联接方法调用:[/align]
[align=left]<script type="text/javascript" src="external.js"></script> [/align]
[align=left]就是这样。[/align]
[align=left]2 浏览器不支持[/align]
[align=left] 有时,使用了上述标签,但是,任旧不见效果,比如使用了target=_blank,却不能弹出窗口,这是因为,有些浏览器被用户设置了,不让弹出窗口,当然这样设置是为了屏蔽广告,因此,这是就无法打开新窗口,知道了原因,解决就很简单了,在浏览器中设置一下就可以了。[/align]
[align=left][/align]
相关文章推荐
- 在现有窗口中打开新窗口,即target_blank的问题
- <base target="_blank">全部链接在新窗口中打开
- 用正则表达式批量为a增加target=''_blank''新窗口打开的方法
- CefSharp禁止弹出新窗体,在同一窗口打开链接,并且支持带type="POST" target="_blank"的链接
- 打开新窗口的几种方式及target=_blank指定窗口名称
- 网页打开新窗口target=_blank不符合标准
- 网页打开新窗口target=_blank不符合标准
- 实现用TARGET='_BLANK'时打开的窗口是最大化的
- AJAX方法中提交请求,target="_blank" 不能正确打开新的浏览器窗口
- <A HREF="" target="_BLANK">打开的新窗口大小的控制
- 网页打开新窗口target=_blank不符合标准
- <A HREF="" target="_BLANK">打开的新窗口大小的控制 .
- 设置HTML:target=_blank,在新窗口中打开链接
- target="_blank" 表示在新窗口中打开页面
- QTP11问题2: QTP11 点击New->Function Libraery后,工具右下角一直显示Opening,一直不能打开Library的窗口
- IE6下,设置了domain,导致target指向iframe时,无法打开链接的问题及解决
- 解决IE不能打开新窗口的问题
- JS打开窗口问题
- 面试题之:HTML <a> 标签的 target 属性中有哪些可以在新窗口中打开链接?
- kendo ui框架多重打开窗口关闭出错问题的解决