Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在更改链接的href属性时,在Chrome下更新链接的已访问状态_Javascript_Html_Google Chrome_Hyperlink_Safari - Fatal编程技术网

Javascript 在更改链接的href属性时,在Chrome下更新链接的已访问状态

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

当我用JavaScript更新链接时

$('#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
属性,然后立即重新添加,迫使浏览器重新计算样式即可