谈谈对A的认识
在web开发中,打交道比较多的除了按钮就是a了, 一般的交互我们基本上都是采用这2种方式进行的,这次就来认识一下a吧。
Html代码
1. <a href="http://www.iteye.com" onclick="return openwin()" target="_self">打开javaeye</a>
<a href="http://www.iteye.com" onclick="return openwin()" target="_self">打开javaeye</a>
a中最重要的就是这3个属性定义了:href、target、onclick。一般的跳转href和target都是配合使用的。
1、target有4个值,分别为_self(默认)、_blank、_top、_parent。
_blank是弹出新窗口显示内容,
_top和_parent是在iframe中才起作用,目的是在顶层刷新(_top),或者是在父页面刷新(_parent),注意:如果没有找到也不会报错,效果就和_blank一样了,新窗口显示内容。
其实target也是可以写其他内容的,例如:
Html代码
1. <a href="http://www.sohu.com" target="main">搜狐</a>
<a href="http://www.sohu.com" target="main">搜狐</a>
,那么,它就会去找name为main的iframe,在该iframe显示http://www.sohu.com的内容。如果没有这个main的话,就和_blank一样。
2、href
href是超链接的访问URI,这个不一定非要是http路径,其实浏览器识别href是通过协议进行的,
1) 如果没有任何协议,例如:
<a href="www.sohu.com">搜狐</a>,那么它寻找的就是当前路径下的www.sohu.com这个资源,显然我们的目录下应该不会有该资源,那么对不起,它就只能显示“无法显示网页”,url也变为file:///C: /Documents%20and%20Settings/jiwen.chenjw/Local%20Settings/Temp /www.sohu.com了。
比如我们的应用访问路径是http://localhost/work/sale/index.do,那么该页面定义的<a href="save.do">save</a>访问的就是http://localhost/work/sale /save.do,<a href="../show.do">link</a>,访问的就是http://localhost/work/show.do,& lt;a href="/save.do">save</a>就是从根目录下开始寻找,也就是访问http://localhost /save.do了。
2) 接下来就应该要说说协议了,常用的协议有http、ftp、javascript,其他还有各种各样的自定义协议了。例如:tencent就是腾讯QQ定义的,如果安装过QQ的话,就会响应相对应的程序。
http是我们最常用的一个协议了,大部分时候我们的程序都没有指定这个协议,它就是依据当前应用程序访问的协议。例如:我们的程序访问url为 http://localhost/work/index.do,那么页面上<a href="show.do">,我们去访问的时候会变为访问http://localhost/work/show.do,会继承当前页面的协议。
javascript这个协议应该是我们最常用的一个了,在处理链接的时候,大部分都是需要调用其他js函数进行处理,例如:
Html代码
1. <a herf="javascript:addUser();">添加用户</a>
2. <script>
3. function addUser(){
4. var form1 = document.getElementById("form1");
5. form1.action="addUser.do";
6. form1.target="_blank";
7. form1.submit();
8. }
9. </script>
<a herf="javascript:addUser();">添加用户</a>
<script>
function addUser(){
var form1 = document.getElementById("form1");
form1.action="addUser.do";
form1.target="_blank";
form1.submit();
}
</script>
第二种写法就是
Html代码
1. <a href="javascript:window.open('http://www.sohu.com')">添加用户</a>
<a href="javascript:window.open('http://www.sohu.com')">添加用户</a>
还有一种写法就是
Html代码
1. <a href="javascript:void(0)" onclick="addUser();">添加用户</a>
<a href="javascript:void(0)" onclick="addUser();">添加用户</a>
这里就引入了onclick事件,上面3种方式都可以做到弹出新窗口进行添加用户操作。那么到底有什么区别呢?
(1)使用javascript:window.open()这种方式,在不同浏览器有不同的效果,ie和Firefox都可以弹出新窗口显示 www.sohu.com的内容,而当前窗口的内容就显示为[object](IE6)以及[object Window](Firefox)。因为window.open是带有返回值的,而href就是获取返回值显示的。所以直接在href中使用 window.open是不推荐的。
我们可以修改为第一种方式。
(2)第三种方式,我们是最常用的,但也会有问题,页面html代码如下:
Html代码
1. <script>
2. function openwin(){
3. var form1 = document.getElementById("form1");
4. form1.target="_blank";
5. form1.submit();
6. }
7. </script>
8. <a href="javascript:void(0)" onclick="openwin()">打开javaeye</a>
9. <form action="http://www.iteye.com" method="post" id="form1">
10. </form>
<script>
function openwin(){
var form1 = document.getElementById("form1");
form1.target="_blank";
form1.submit();
}
</script>
<a href="javascript:void(0)" onclick="openwin()">打开javaeye</a>
<form action="http://www.iteye.com" method="post" id="form1">
</form>
在ie6、firefox中测试没有问题,可以点击多次,而在google chrome浏览器中就只能打开一次,影响用户使用。
第一种方式也同样有这种问题。问题出在哪里呢?
不论是第一种还是第三种,其实都是执行了2次action,一次是openwin中打开新的页面,一次是执行void(0)或者是执行 addUser的返回值,而void(0)和addUser的返回值都是为空,所以页面没有变化。这样就可以解释<a href="#" onclick="openwin()">打开javaeye</a>会跳到页面头部去,同时也会执行onclick的事件。
那我们有没有办法只执行一次呢,也就是只执行openwin这个函数,而不去触发href呢,第一种方式显然不行。
我们修改html代码如下:
Html代码
1. <script>
2. function openwin(){
3. var form1 = document.getElementById("form1");
4. form1.target="_blank";
5. form1.submit();
6. return false;
7. }
8. </script>
9. <a href="http://www.sohu.com" onclick="return openwin()">打开javaeye</a>
10. <form action="http://www.iteye.com" method="post" id="form1">
11. </form>
<script>
function openwin(){
var form1 = document.getElementById("form1");
form1.target="_blank";
form1.submit();
return false;
}
</script>
<a href="http://www.sohu.com" onclick="return openwin()">打开javaeye</a>
<form action="http://www.iteye.com" method="post" id="form1">
</form>
如果onclick="openwin()"那么我们会发现当前页面也同时跳转到搜狐首页去了,当我们修改为onclick="return openwin()",会发现这个页面就不会跳转。
这样就可以知道如果onclick的返回值如果为false,那么就不会触发href。
但上面的代码在chrome中只有第一次点击的时候才有效,原因呢?我们大概可以想到估计是和Ajax的处理原则一样,是不是因为form的action没有发生变化才导致的呢,那我们把代码修改为如下:
Html代码
1. <script>
2. function openwin(){
3. var form1 = document.getElementById("form1");
4. form1.action="http://www.iteye.com?date="+new Date().getTime();
5. form1.target="_blank";
6. form1.submit();
7. return false;
8. }
9. </script>
10. <a href="http://www.sohu.com" onclick="return openwin()">打开javaeye</a>
11. <form action="http://www.iteye.com" method="post" id="form1">
12. </form>
<script>
function openwin(){
var form1 = document.getElementById("form1");
form1.action="http://www.iteye.com?date="+new Date().getTime();
form1.target="_blank";
form1.submit();
return false;
}
</script>
<a href="http://www.sohu.com" onclick="return openwin()">打开javaeye</a>
<form action="http://www.iteye.com" method="post" id="form1">
</form>
在chrome中测试成功。
总结一下:
Html代码
1. <script>
2. function openwin(){
3. var form1 = document.getElementById("form1");
4. form1.action="http://www.iteye.com?date="+new Date().getTime();
5. form1.target="_blank";
6. form1.submit();
7. return false;
8. }
9. </script>
10. <a href="http://www.sohu.com" onclick="return openwin()">打开javaeye</a>
11. <form action="http://www.iteye.com" method="post" id="form1">
12. </form>
<script>
function openwin(){
var form1 = document.getElementById("form1");
form1.action="http://www.iteye.com?date="+new Date().getTime();
form1.target="_blank";
form1.submit();
return false;
}
</script>
<a href="http://www.sohu.com" onclick="return openwin()">打开javaeye</a>
<form action="http://www.iteye.com" method="post" id="form1">
</form>
页面中的代码处理如上所示,在onclick中获取返回值为false,也可以这样写onclick="openwin();return false;"但不太直观,还是建议如上写法。
解释一下为什么href不设置为javascript:void(0)呢,主要是让用户在关闭Javascript功能的时候点击该链接有响应,使用Javascript的原则就是尽量少用js。
分享到:
相关推荐
标题中的“探讨链接 探讨a.html”暗示了我们即将讨论的是有关HTML链接(a标签)的知识。在网页开发中,HTML(超文本标记语言)是构建网页的基础,而`<a>`标签则是HTML中用于创建超链接的关键元素,它允许用户从一个...
本文将深入探讨`<a>`标签的用法,以及如何在JSP(JavaServer Pages)环境中实现美观的链接特效。 首先,`<a>`标签的基本结构如下: ```html <a href="链接地址" target="目标属性">链接文本</a> ``` 其中,`href`...
动态链接库及静态链接库(Windows下的.dll .lib和Linux下的.so .a) 动态链接库和静态链接库是两种不同的库文件类型,它们在编译和链接过程中扮演着重要的角色。下面我们将详细探讨这两种库文件的特点和使用方法。 ...
在这个例子中,可以看到`main.cpp`和`a.cpp`中存在重复的声明和定义,但由于它们都是具有内部链接的实体,因此在连接时不会产生冲突。 #### 六、总结 通过对C++内部链接与外部链接的详细介绍,我们可以看出两者之间...
下面我们就详细探讨一下如何在不使用`<a>`标签的情况下,为表格和层添加链接。 ### 不使用`<a>`标签创建链接 #### 1. 使用JavaScript与CSS实现 一种常见的做法是利用JavaScript结合CSS来模拟链接行为。例如,在...
在探讨“链接点击过就会变色”的主题时,我们深入挖掘了网页设计中一个非常实用且常见的特性——链接状态变化。这一功能不仅提升了用户体验,还为网页增添了一抹交互性的色彩,让页面更加生动有趣。 ### 链接状态与...
在这个话题中,我们将深入探讨如何利用HTML的`<a>`标签创建锚点链接,以及如何在jQuery中处理这些链接以实现当前页面的平滑滚动效果。 首先,`<a>`标签是HTML中用于创建链接的基本元素,它通常与`href`属性一起使用...
在本篇文章中,我们将深入探讨文字链接的概念、用途、实现方式以及在不同场景下的应用。 一、文字链接的定义与作用 文字链接,也称为超链接,是网页设计的基本组成部分。它是由一段可点击的文本或数字组成的,当...
本文将详细讲解如何使用`<a>`标签实现下载链接,并探讨HTML5中新增的`download`属性。 首先,让我们了解基础的`<a>`标签用法。一个简单的`<a>`标签通常包含`href`属性,该属性定义了链接的目标。例如,如果想要链接...
本文将深入探讨在Linux环境下,针对海思平台进行阿里IoT Kit C SDK移植时遇到的`libiot_sdk.a`静态库链接`libhal.a`出错的问题及其解决方案。 首先,问题的核心在于`libiot_sdk`与`libhal`之间的依赖关系。`libiot_...
本文将深入探讨e4a与电脑易语言服务端之间的通信机制,帮助开发者理解如何实现两者之间的数据交互。 首先,让我们了解e4a的基本概念。e4a,全称是Easy for Android,它提供了一种类似Basic的编程语法,让开发者能够...
在这个主题“css_各种超级链接样式”中,我们将深入探讨如何使用CSS来定制超级链接的样式,使其更具吸引力和功能性。 1. **超级链接(a标签)基础** 超级链接是由HTML的`<a>`标签创建的,用于链接到其他页面或资源...
在这个“动态链接库(隐式链接)制作简单计算器”的项目中,我们将探讨如何创建一个简单的计算器功能,并通过隐式链接来调用DLL中的函数。 首先,我们需要理解动态链接库的两种主要链接方式:隐式链接和显式链接。...
本文将深入探讨如何使用易语言来提取网页中的链接地址,并结合提供的源码进行详细解析。 首先,我们要了解网页的基本结构。网页主要由HTML(HyperText Markup Language)组成,其中`<a>`标签用于定义超链接。提取...
下面我们将深入探讨与这个工具相关的几个关键知识点。 首先,我们要理解什么是网页链接。在互联网上,每个页面都有一个唯一的URL(Uniform Resource Locator),它是网站地址,用于定位网络资源。URL由协议(如HTTP...
本篇文章将详细探讨这两种链接库的概念、创建过程以及如何在C++项目中使用它们。 **静态链接库(Static Linking Library)** 静态链接库是编译器在生成可执行文件时,会将库中的函数和数据直接嵌入到目标代码中。...
根据给定的文件信息,我们可以深入探讨“迅雷专用下载链接代码”的相关知识点,这将涵盖如何使用不同的编程语言(如JavaScript、JSP、ASP、PHP)来创建专门用于迅雷下载的链接。 ### 一、理解迅雷专用下载链接 ...
本篇文章将深入探讨CSS如何控制链接的样式,包括不同链接状态、伪类选择器的应用以及在实际网站设计中的实践案例。 一、链接的四种状态 在CSS中,链接有四个不同的状态,每个状态对应链接的不同阶段: 1. `a:link...
动态链接库与静态链接库(.a文件)的主要区别在于,静态链接库在编译时会将库中的代码合并到可执行文件中,而动态链接库则在程序运行时才加载到内存中。这使得动态链接库可以被多个进程共享,降低了程序的体积。 二...
这里我们将深入探讨如何用JS控制链接的打开方式,以及涉及的`_blank`和`_self`两个目标属性。 首先,了解`_blank`和`_self`这两个链接目标属性。在HTML中,`<a>`标签的`target`属性用于定义链接打开的位置。`_self`...