在JavaScript中启用和禁用超链接
我正在进行一个项目,需要暂时禁用所有超链接,然后在弹出div消失后再次启用它们。我能够使用我编写的此函数成功禁用所有链接:在JavaScript中启用和禁用超链接,javascript,html,hyperlink,href,Javascript,Html,Hyperlink,Href,我正在进行一个项目,需要暂时禁用所有超链接,然后在弹出div消失后再次启用它们。我能够使用我编写的此函数成功禁用所有链接: function disableHyperlinks(){ link_targets = Array(); var anchors = document.getElementsByTagName("a"); for(var i = 0; i < anchors.length; i++){
function disableHyperlinks(){
link_targets = Array();
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i++){
link_targets.push(anchors[i].href);
anchors[i].href= "#";
}
}
函数禁用超链接(){
link_targets=Array();
var archors=document.getElementsByTagName(“a”);
对于(var i=0;i
它还保存所有URL,以便稍后使用此功能将其放回:
function enableHyperlinks(){
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i++){
anchors[i].href= link_targets[i];
}
}
功能启用超链接(){
var archors=document.getElementsByTagName(“a”);
对于(var i=0;i
上面的代码似乎工作得很好,它删除了所有链接,然后将它们全部放回原处,没有任何问题,但是问题是,如果在单击链接后运行“启用”代码,就好像javascript将链接设置回原始目标,然后注册单击。因此,尽管以这种方式被“禁用”,链接仍然会离开页面
这个问题被证明了
单击白色背景的红色“L”以启用我为选择所做的javascript,您会注意到您将鼠标移到上面的任何内容都将得到蓝色虚线边框,如果同时单击链接,我需要能够“选择”网页的部分,而无需重定向到另一页。。你知道我该怎么做吗
(请注意,我试图避免使用JQuery)使用onClick侦听器:
var areEnabled = false;
function toggleLinks(){
var anchors = document.getElementsByTagName('a');
for(var i=0; i < anchors.length; i++)
anchors[i].onclick = (areEnabled) ? null : function(e){ return false };
areEnabled = !areEnabled;
};
var arenabled=false;
函数toggleLinks(){
var archors=document.getElementsByTagName('a');
对于(var i=0;i
您可以在z-index
弹出窗口下方创建另一个不可见的div
,它将覆盖整个页面并捕获所有点击,而不是下方的元素,而不是搜索许多链接并禁用它们(顺便说一句,这对其他可点击对象没有帮助)。您甚至可以将其设置为半透明,而不是完全不可见,以获得视觉效果,提醒用户“较低级别”已禁用。我终于能够通过操纵每个超链接的onclick属性来解决自己的问题,然后将其设置回以前的状态。bokonic的响应唯一的问题是onclick属性被设置为null以“重新启用”链接,这将禁用该链接以前拥有的任何javascript功能
var onclickEvents;
function disableHyperlinks(){
onclickEvents = Array();
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i++){
onclickEvents.push(anchors[i].onclick);
anchors[i].onclick=function(){return false;};
}
}
function enableHyperlinks(){
var anchors = document.getElementsByTagName("a");
for(var i = 0; i < anchors.length; i++){
anchors[i].onclick = onclickEvents[i];
}
}
var-onclickEvents;
函数禁用超链接(){
onclickEvents=Array();
var archors=document.getElementsByTagName(“a”);
对于(var i=0;i
我不知道标签有这个属性,谢谢!但是,使用这种方法并没有解决问题。应该是onclick,而不是onclick仍然不起作用,我认为问题可能不是我禁用链接的确切方式。当我将鼠标悬停在“disabled”链接上时,它确实显示它指向“#”,但当我单击它时,它指向它原来指向的位置,而不是“#”。o_o链接到JS:请看我链接到的演示站点,我需要能够在页面上选择项目,然后单击它们,而不必单击链接。我并不担心弹出div后面的可点击项目。@PatrickTNelson,的确如此。那么,同样的解决方案如何,覆盖div中的所有内容,给它分配一个处理程序来确定鼠标下的元素,或者让click掉下来,或者取消它?听起来不错,但对于web开发,我是一个新手,我不知道如何实现它。有一个链接到某种形式的教程可能会有所帮助吗?好吧,我屈服了,我现在正在使用JQuery。能够使用preventDefault()在Chrome中解决此问题;但这并不能解决Firefox中的问题。