创建一个双功能的html Url链接
Create a dual function html Url Link?
问题:
您在HTML页面中有一组常规的URL链接,例如:
<a href="/foo/bar">Foo Bar</a>
您想要创建一个JavaScript函数,这样当点击任何HTML链接时,客户端的浏览器就不必导航到新的URL"/foo/bar",而是执行一个JavaScript功能(例如。例如,这可以调用Ajasian并加载HTML数据,而无需重新加载页面)。
但是,如果JavaScript被禁用或蜘蛛对网站进行爬网,则UTL链接将得到良好维护。
这可能吗?它已经存在了吗?通常的方法是什么?
编辑1:
这些都是很好的答案!
只是一个后续问题:
如果用户单击后退按钮或前进按钮,这将自然中断(因为它将返回到它所在的最后一个物理页面,而不是加载的页面)。
是否有任何方法(跨浏览器)来维护后退/前进按钮?
(例如,创建一个点击并覆盖浏览器按钮的链接数组,并使用该数组进行导航)?
<script type="text/javascript">
function your_function() {
alert('clicked!');
}
</script>
<a onclick="your_function();" href="/foo/bar">Foo Bar</a>
如果Javascript处于关闭状态,则链接行为正常。
在这种情况下,除非your_function()
没有返回false,否则单击时也会跟随该链接。
为了防止这种情况,可以使your_function()
返回false,或者在onclick属性中的函数调用之后添加return false;
<script type="text/javascript">
function your_function() {
alert('clicked!');
return false;
}
</script>
<a onclick="your_function();" href="/foo/bar">Foo Bar</a>
或者:
<script type="text/javascript">
function your_function() {
alert('clicked!');
}
</script>
<a onclick="your_function(); return false;" href="/foo/bar">Foo Bar</a>
使用元素.addEventListener()
点击后默认锚定行为:
<script type="text/javascript">
document.addEventListener("load", function() {
document.getElementById("your_link").addEventListener("click", function() {
alert('clicked');
}, true);
}, true);
</script>
<a id="your_link" href="/foo/bar">Foo Bar</a>
无:
<script type="text/javascript">
document.addEventListener("load", function() {
document.getElementById("your_link").addEventListener("click", function(event) {
event.preventDefault();
alert('clicked');
}, true);
}, false);
</script>
<a id="your_link" href="/foo/bar">Foo Bar</a>
考虑到当前的HTML和W3C API,我会选择:
<script src="linkify.js"> </script>
在标记中,linkify.js
包含以下内容:
window.onload= function() {
document.addEventListener('click', function(ev) {
ev.preventDefault();
var el = ev.target;
if (el.tagName === 'A') {
// do stuff with el.href
}
}, false);
};
参见例如。http://jsfiddle.net/alnitak/nrC7G/或http://jsfiddle.net/alnitak/6necb/对于不使用CCD_ 5的版本。
请注意,此代码使用在document
对象上注册的单个侦听器函数,该函数将作用于页面上的每个<A>
标记,该标记本身不会捕获点击。
使用onclick
属性:
<a href="/home.html" onclick="javascript: performFunction(this); return false;">click?</a>
return false
阻止默认行为,但在没有JavaScript的情况下,将遵循该链接。
function do_whatever (e)
{
e.preventDefault ();
// do whatever you want with e.target
}
var links = document.getElementsByTagName ("a");
for (var i=0; i<links.length; ++i)
links[i].addEventListener ('click', do_whatever);
http://jsfiddle.net/bTuN7/
所有这些都是在脚本内完成的,如果JavaScript不起作用,它不会"受伤"。
如果你考虑AJAX,那么你必须知道,谷歌机器人试图解析它。http://www.youtube.com/watch?v=9qGGBYd51Ts
您可以进行如下编码:
$('a').click(function() {
doSomethingWithURL($(this).attr('href'));
return false;
});
JavaScript不会在被禁用或是某个网络爬虫的情况下执行,所以从我的角度来看,这是最好的。
有很多这样的方法:http://www.malbecmedia.com/blog/development/coding-a-ajax-site-that-degrades-gracefully-with-jquery/
不过,请记住,凭借设置良好的服务器和缓存,Ajax Load不会为您带来太多性能。
- 按下一个HTML按钮,该按钮使用一个功能在同一个新窗口中打开URL
- 如何将具有相同功能的两个select html标签的两个JS组合在一起
- 如何将脚本的不同功能放在同一个html页面中
- 使用html 5对元素执行自定义表单验证功能
- 来自“选择”选项的 HTML 画布功能
- 如何使用位置获取滚动功能获取 HTML 中的元素标签
- 使用 jquery 禁用 html 表单中提交按钮的功能,但仍使其可见
- 包括从外部文件到HTML的查询功能(使用Dropbox进行本地测试)
- 将事件处理程序放在HTML按钮上,而不覆盖其默认功能
- 是否可以设置一个功能“;联系我们”;页面使用HTML/CSS
- 在PhpStorm中创建自定义语言,扩展所有html语言功能
- androidphonegap-在单个html页面中导航功能或事件时实现后退按钮
- 倒计时计时器功能和带有html标签的php
- 与 HTML 中的按钮关联的功能 - 未按预期工作
- 具有挖空功能的 HTML 实体
- 如何将此功能实现到我的索引.html
- 如何从 html 的文本字段获取值到 JavaScript 功能
- HTML - PHP 中的“点击”确认功能
- 如何使此功能在我的 html 页面中一次性工作
- HTML <音频>标签的播放功能无法在移动设备上触发