Chrome 上的区分大小写的锚点问题
Case sensitive anchor issue on Chrome
区分大小写的 link 不适用于 chrome。如果锚的名称是 link#Anchor1 将不起作用,而 link#anchor1 将起作用。
我继续搜索解决方案并找到了 .toLowerCase() 函数。
现在我遇到了一个无法解决的新问题:Uncaught TypeError: anchorEl.offset is not a function
$(window).load(function()
{
var hashVal= window.location.hash.substring(1).toLowerCase();
var anchorEl = $("a[name='"+hashVal+"']").toLocaleString().toLowerCase().split(',');
var elOffset = anchorEl.offset();
var offsetTop = elOffset.top;
$(document).scrollTop( offsetTop - 200);
console.log(offsetTop);
});
它在 Firefox 上部分工作,除了偏移值,+200 或 -200 不会有什么不同(它在导航栏后面)但它不会移动一英寸 Chrome.
像下面这样尝试。首先 select 所有具有 name
属性的 a
元素,然后与 windows 哈希进行比较的文件管理器。
var anchorEl = $("a[name]").toArray().filter(function(a) {
return $(a).attr('name').toLowerCase() == hashVal.toLowerCase();
});
var elOffset = $(anchorEl).offset();
下面的结帐代码。它滚动到 300 像素;
$(window).load(function() {
var hashVal = "Action"; //window.location.hash.substring(1).toLowerCase();
var anchorEl = $("a[name]").toArray().filter(function(a) {
return $(a).attr('name').toLowerCase() == hashVal.toLowerCase();
});
if (anchorEl.length > 0) {
var elOffset = $(anchorEl).offset();
var offsetTop = elOffset.top;
$(document).scrollTop(offsetTop - 200);
console.log(offsetTop);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div style="margin-top: 300px;">
<a href="#" name="action"> action </a>
</div>
<div style="margin-bottom: 300px;">
<a href="#" name="action2"> action2 </a>
</div>
区分大小写的 link 不适用于 chrome。如果锚的名称是 link#Anchor1 将不起作用,而 link#anchor1 将起作用。
我继续搜索解决方案并找到了 .toLowerCase() 函数。 现在我遇到了一个无法解决的新问题:Uncaught TypeError: anchorEl.offset is not a function
$(window).load(function()
{
var hashVal= window.location.hash.substring(1).toLowerCase();
var anchorEl = $("a[name='"+hashVal+"']").toLocaleString().toLowerCase().split(',');
var elOffset = anchorEl.offset();
var offsetTop = elOffset.top;
$(document).scrollTop( offsetTop - 200);
console.log(offsetTop);
});
它在 Firefox 上部分工作,除了偏移值,+200 或 -200 不会有什么不同(它在导航栏后面)但它不会移动一英寸 Chrome.
像下面这样尝试。首先 select 所有具有 name
属性的 a
元素,然后与 windows 哈希进行比较的文件管理器。
var anchorEl = $("a[name]").toArray().filter(function(a) {
return $(a).attr('name').toLowerCase() == hashVal.toLowerCase();
});
var elOffset = $(anchorEl).offset();
下面的结帐代码。它滚动到 300 像素;
$(window).load(function() {
var hashVal = "Action"; //window.location.hash.substring(1).toLowerCase();
var anchorEl = $("a[name]").toArray().filter(function(a) {
return $(a).attr('name').toLowerCase() == hashVal.toLowerCase();
});
if (anchorEl.length > 0) {
var elOffset = $(anchorEl).offset();
var offsetTop = elOffset.top;
$(document).scrollTop(offsetTop - 200);
console.log(offsetTop);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<div style="margin-top: 300px;">
<a href="#" name="action"> action </a>
</div>
<div style="margin-bottom: 300px;">
<a href="#" name="action2"> action2 </a>
</div>