是什么下面的代码的意思是 -的Javascript协议和事件
<a href="javacsript:;" onClick="addItem(160)">some link</a>
我的基本疑问是脚本,当我们点击链接
是什么下面的代码的意思是 -的Javascript协议和事件
<a href="javacsript:;" onClick="addItem(160)">some link</a>
我的基本疑问是脚本,当我们点击链接
的onclick
将首先运行上运行。如果onclick
不返回false
(在这种情况下不会),则将处理href
。
您的疑问是真实的,你必须找到“功能的addItem(X)”中,通过从页面脚本标签链接(通常在头标记)的JavaScript文件
函数addItem存在于其中一个脚本文件中。我的疑问是,如果addItem返回false会发生什么? – ayush 2010-06-05 05:51:56
的“的javascript:”。里面的href是一种告诉浏览器执行javascript而不是转到不同页面的方式。
该行例如将显示带有“测试”消息的消息框。
<a href="javascript:alert('testing');">Click me</a>
而这一次将执行一个空的JavaScript语句,会做什么
<a href="javacsript:;">Click me</a>
的onclick是点击一个链接时也触发一个事件。与href不同,它不允许您链接到不同的页面;它只接受JavaScript。
浏览器将首先触发onclick事件,然后处理href属性。如果它是一个URL(空href意味着当前URL;点击将刷新页面),它会跟着它,如果它是JavaScript它将执行它。
把“javascript :;”或“javascript:void(null);”内部href旧错误技术确保浏览器在onclick处理后不刷新页面。
要回答你的问题; 两个脚本都会执行,但href脚本不会执行任何操作。
不是那么简单,@Luc!看看脚本实际返回值会发生什么! – Pointy 2010-06-05 11:57:56
部分href
属性是协议(您知道,如http,ftp或mailto)。它所做的是告诉浏览器该URL实际上是JavaScript代码。
通常,当您点击一个链接时,浏览器将执行它在href
属性中发现的任何内容。但是,浏览器也会在之前触发onclick
事件它处理href的事情。因此,设置onclick处理程序将覆盖正常行为。
因此,事件处理程序成为王,它有可能通过返回true
(allow)或false
(prevent)来允许或阻止默认浏览器行为。
因此,在您的示例中,当您单击该链接时,浏览器将触发addItem
。如果它返回false
,则什么都不会发生。如果返回true
,浏览器将执行href
属性中的代码。但由于它在那里没有发现任何声明(即空声明),所以没有任何反应。
试试下面的代码:
<a href="http://google.com/" onclick="return false;">won't go to google.com</a>
<a href="http://google.com/" onclick="return true;">will go to google.com</a>
这是否对你有意义?
注意,当浏览器解释“的javascript:”一个“HREF”的值,如果返回值不为空那么它被解释为所需的<a>
标签文档内容!这是一个测试页面,让您享受:
http://gutfullofbeer.net/jslink.html
源为该页面(看一下它,它真的很短),包括以下链接:
<a href='javascript:getLink()'>Click to go there!</a>
功能“getLink ()”被定义为如下:
function getLink() {
var sel = document.getElementById('sel');
return sel.options[sel.selectedIndex].value;
}
正如所看到的,该函数抓住的当前选择的值3210元素和返回那。 <select>
元素是什么样子的?
<select id='sel'>
<option value='<html><head><meta http-equiv="refresh" content="2;http://cnn.com"/></head><body>Redirecting to CNN ...</body></html>'>CNN</option>
<option value='<html><head><meta http-equiv="refresh" content="2;http://zombo.com"/><head><body>Redirecting to Zombocom ...</body></html>'>Zombocom</option>
<option value='<html><head><meta http-equiv="refresh" content="2;http://reddit.com"/></head><body>Redirecting to Reddit ...</body></html>'>Reddit</option>
</select>
这些选项的值是一个页面的完整HTML标记,包含重定向到所请求站点的页面。由于URL返回一个值,因此浏览器将该值理解为新的页面内容。
这是非常令人兴奋的。我不确定为什么你会这样做。
以及在处理href时将调用哪些脚本? – ayush 2010-06-05 05:41:16
在您的示例中,将处理内联JavaScript('javascript:;')。如果href是一个普通的URL,浏览器就会导航到它。 – Matt 2010-06-05 05:42:12
没有。作者可能认为,如果onclick不返回false,这是防止锚点推向另一个页面的好方法。您还会看到很多javascript:void()。实际上最好确保onclick事件返回false,如果没有,请确保href推到某种类型的后备。或者,根本不要使用锚标签。 – Andrew 2010-06-05 05:45:15