有没有一种方法可以使用JavaScript禁用任何网站中的所有超链接?
我想这样做的原因是为了文本选择。许多网站将整个文本块放在a标签内,使得选择文本变得困难。
我在Kubuntu 13.10上使用Chromium和Firefox浏览器。
我想这样做的原因是为了文本选择。许多网站将整个文本块放在a标签内,使得选择文本变得困难。
我在Kubuntu 13.10上使用Chromium和Firefox浏览器。
要禁用所有链接,请使用以下方法:
$('a').bind("click.myDisable", function() {
return false;
});
并启用它使用
$('a').unbind("click.myDisable");
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.js
(function($) {
$.fn.changeElementType = function(newType) {
var attrs = {};
$.each(this[0].attributes, function(idx, attr) {
attrs[attr.nodeName] = attr.nodeValue;
});
this.replaceWith(function() {
return $("<" + newType + "/>", attrs).append($(this).contents());
});
};
})(jQuery);
$('a').changeElementType('span');
新版(性能更优):
脚本可以是:
var links = document.getElementsByTagName('a');
for(var i=0;i<links.length;i++)
{
links[i].href='#';
links[i].onclick = function(){ return false; };
}
好的,根据Rob G所说的内容,我会给出一个完全不同的答案。
for (var x=document.links.length-1;x>=0;x--) {
document.links[x].removeAttribute("href")
}
function replaceA(element) {
for (var i=element.children.length-1;i>=0;i--) {
var getChild = element.children[i];
if (getChild.tagName == "A") {
element.innerHTML = element.innerHTML.replace(getChild.outerHTML,getChild.innerHTML);
} else {
replaceA(getChild);
}
}
}
window.onload = function(){replaceA(document.body)};
这个方法有些不规范,基本上当页面加载完成后,它会将所有链接替换为它们的innerHTML文本。如果你想在页面加载时不使用它,只需删除window.onload部分,并在需要使用时调用replaceA(document.body)。