我正在使用Jscrollpane并且一切都很好,除非我尝试将其与内部锚点一起使用。 它应该像官方页面上的示例一样工作。
但在我的例子中它确实破坏了我的网站。整个内容都是向上浮动的,我自己也无法弄明白。
这是我的页面:http://kunden.kunstrasen.at/htmltriest/index.php?site=dieanreise&user_lang=de 如果点击内部锚点:http://kunden.kunstrasen.at/htmltriest/index.php?site=dieanreise&user_lang=de#westautobahn
有人在这里发生什么事吗? 谢谢你的帮助。
答案 0 :(得分:1)
jspane不适用于旧式锚点 例如
<a name="anchor"></a>
而你必须写
<a id="anchor"></a>
另外你必须启用
hijackInternalLinks: true;
在jScrollPane设置对象中。
hijackInternalLinks还捕获滚动窗口外部的链接,如果你只需要内部链接就可以添加这些代码,比如hijackInternalLinks它会绑定a元素上的click funktion并调用带有目标的scrollToElement:
\$(document).ready(function() {
panes = \$(".scroll");
//hijackInternalLinks: true;
panes.jScrollPane({
});
panes.each(function(i,obj){
var pane = \$(obj);
var api = pane.data('jsp');
var links = pane.find("a");
links.bind('click', function() {
var uriParts = this.href.split('#');
if (uriParts.length == 2) {
var target = '#' + uriParts[1];
try{
api.scrollToElement(target, true);
}catch(e){
alert(e);
}
return false;
}
});
});
});
但请注意,您始终必须在代码上使用id属性。 如果您使用的是tinymce,可以使用此功能修复代码
function myCustomCleanup(type, value) {
switch (type) {
case "get_from_editor_dom":
var as = value.getElementsByTagName("a");
for(var i=0; i< as.length;i++){
if (as[i].hasAttribute('name')){
var name = as[i].getAttribute('name');
as[i].setAttribute('id',name);
}
}
break;
}
return value;
}