Javascript 在更改链接的href属性时,在Chrome下更新链接的已访问状态
当我用JavaScript更新链接时Javascript 在更改链接的href属性时,在Chrome下更新链接的已访问状态,javascript,html,google-chrome,hyperlink,safari,Javascript,Html,Google Chrome,Hyperlink,Safari,当我用JavaScript更新链接时 $('#link_id').attr('href', some_new_url) 无论新url地址的状态如何,已访问/未访问链接的颜色主题都将保持不变 是否有办法更改链接地址,迫使浏览器重新检查其访问状态 进一步说明: 我(在OSX 10.8上)在Chrome(32)和Safari(6.1)中遇到了这个问题。在Firefox(26)中,链接状态会根据需要自动更新 上面的例子在jQuery中,但问题与vanilla JavaScript相同,即documen
$('#link_id').attr('href', some_new_url)
无论新url地址的状态如何,已访问/未访问链接的颜色主题都将保持不变
是否有办法更改链接地址,迫使浏览器重新检查其访问状态
进一步说明:
我(在OSX 10.8上)在Chrome(32)和Safari(6.1)中遇到了这个问题。在Firefox(26)中,链接状态会根据需要自动更新
上面的例子在jQuery中,但问题与vanilla JavaScript相同,即document.getElementById
和setAttribute
(我希望避免删除和添加
您可以这样更改它:
$('#link_id').replaceWith($('<a href="' + some_new_url +'">' + $('#link_id').text() + '</a>'));
$('#link_id').prop('href', some_new_url).toggleClass('webkit-force-recalculate');
$('#link_id')。替换为($('');
它应该可以做到。测试:您可以这样更改它:
$('#link_id').replaceWith($('<a href="' + some_new_url +'">' + $('#link_id').text() + '</a>'));
$('#link_id').prop('href', some_new_url).toggleClass('webkit-force-recalculate');
$('#link_id')。替换为($('');
它应该可以做到。测试:您可以这样更改它:
$('#link_id').replaceWith($('<a href="' + some_new_url +'">' + $('#link_id').text() + '</a>'));
$('#link_id').prop('href', some_new_url).toggleClass('webkit-force-recalculate');
$('#link_id')。替换为($('');
它应该可以做到。测试:您可以这样更改它:
$('#link_id').replaceWith($('<a href="' + some_new_url +'">' + $('#link_id').text() + '</a>'));
$('#link_id').prop('href', some_new_url).toggleClass('webkit-force-recalculate');
$('#link_id')。替换为($('');
测试:我想您可能需要的是以下CSS代码:
a:link {
text-decoration: none;
color: #00F;
}
a:visited {
color: #00F;
}
我认为您可能正在寻找以下CSS代码:
a:link {
text-decoration: none;
color: #00F;
}
a:visited {
color: #00F;
}
我认为您可能正在寻找以下CSS代码:
a:link {
text-decoration: none;
color: #00F;
}
a:visited {
color: #00F;
}
我认为您可能正在寻找以下CSS代码:
a:link {
text-decoration: none;
color: #00F;
}
a:visited {
color: #00F;
}
明确答案
要解决此问题,只需通过完全删除href
属性,然后立即重新添加属性,迫使浏览器重新计算样式。这将使浏览器首先计算样式,因为
PS:在这种情况下,使用.attr('href',一些新的url);
可能同样有效
以前的尝试
我的想法是这是一个渲染故障。当:visted
状态因脚本而更改时,它不会重新计算样式。您的问题的最小示例很好地说明了这一点。您可以尝试以下任一方法:
使用元素的属性
问题可能是您正在更改属性,这反过来会更改href属性。如果您直接更改href属性,它可能会起作用。您可以通过,这将使用以下代码更改链接:
$('#link_id').prop('href', some_new_url);
.我对这一点并没有太高的期望,但值得一试。我认为效果会更好的是:
强制重新计算样式
如果要强制重新计算样式,只需更改要更新的最高元素上的类即可。因为您正在更新
我认为这很可能会奏效
如果这两种方法都不适用于您,您当然可以使用。最终答案
要解决此问题,只需通过完全删除href
属性,然后立即重新添加属性,迫使浏览器重新计算样式。这将使浏览器首先计算样式,因为
PS:在这种情况下,使用.attr('href',一些新的url);
可能同样有效
以前的尝试
我的想法是这是一个渲染故障。当:visted
状态因脚本而更改时,它不会重新计算样式。您的问题的最小示例很好地说明了这一点。您可以尝试以下任一方法:
使用元素的属性
问题可能是您正在更改属性,这反过来会更改href属性。如果您直接更改href属性,它可能会起作用。您可以通过,这将使用以下代码更改链接:
$('#link_id').prop('href', some_new_url);
.我对这一点并没有太高的期望,但值得一试。我认为效果会更好的是:
强制重新计算样式
如果要强制重新计算样式,只需更改要更新的最高元素上的类即可。因为您正在更新
我认为这很可能会奏效
如果这两种方法都不适用于您,您当然可以使用。最终答案
要解决此问题,只需通过完全删除href
属性,然后立即重新添加属性,迫使浏览器重新计算样式。这将使浏览器首先计算样式,因为
PS:在这种情况下,使用.attr('href',一些新的url);
可能同样有效
以前的尝试
我的想法是这是一个渲染故障。当:visted
状态因脚本而更改时,它不会重新计算样式。您的问题的最小示例很好地说明了这一点。您可以尝试以下任一方法:
使用元素的属性
问题可能是您正在更改属性,这反过来会更改href属性。如果您直接更改href属性,它可能会起作用。您可以通过,这将使用以下代码更改链接:
$('#link_id').prop('href', some_new_url);
.我对这一点并没有太高的期望,但值得一试。我认为效果会更好的是:
强制重新计算样式
如果要强制重新计算样式,只需更改要更新的最高元素上的类即可。因为您正在更新
我认为这很可能会奏效
如果这两种方法都不适用于您,您当然可以使用。最终答案
要解决这个问题,只需完全删除href
属性,然后立即重新添加,迫使浏览器重新计算样式即可