有没有办法使用javascript禁用任何网站中的所有超链接?
我想要这样做的原因是文本选择。许多网站都将整个文本块放在标签中,这使得选择文本变得很困难。
我在kubuntu 13.10上使用chrome和firefox。
答案 0 :(得分:4)
要禁用所有链接,请使用
$('a').bind("click.myDisable", function() {
return false;
});
并启用它
$('a').unbind("click.myDisable");
答案 1 :(得分:2)
是的。您可以使用Greasemonkey插件用于Firefox,Tampermonkey用于Chrome,以实现此目的。
<强>更新强>
在greasemonkey中使用它。它将用跨度替换所有链接。通过这种方式,可以像普通文本一样选择它们:
// @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; };
}
答案 2 :(得分:2)
使用Rob G所说的,我删除的答案完全不同。
for (var x=document.links.length-1;x>=0;x--) {
document.links[x].removeAttribute("href")
}
答案 3 :(得分:0)
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)};
有点hacky,基本上当页面加载时,它将仅用他们的innerHTML文本替换所有链接。如果您想使用它而不是在页面加载时,只需删除window.onload部分,并在您希望使用它时调用replaceA(document.body)
答案 4 :(得分:0)
根据这个论坛帖子,有一些选择:
希望有所帮助。