长话短说,我正在开发一个 Web 应用程序并在其中使用 AJAX。
我试图禁用点击时链接的默认操作,将哈希值附加到链接,然后从网址中删除“#”。
我遇到的问题是,虽然哈希值被相应地附加,但子字符串方法并没有提取“#”,而是提取了它后面的字母......
这是我的代码。 PS,我在那里留下了我的评论,这样你就明白了我想要去的地方
所以我不知道......我的逻辑或设置可能是错误的......
$(document).ready(function(){
//app vars
var mainHash = "index";
var menuBtn = $('.leftButton');
//~~~~~~load the index page at first go.
loadPage();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~menu show/hide
menuBtn.click( function(){
$('#menu').toggleClass();
});
//Menu items on click , disable link default actions.
$('#menu a').click( hijackLinks );
//~~~~~~~~~~~~~~~~~~~~~~~~~~~functions for mobile index load AND hijacking app links to AJAX links.
function loadPage(url){
if( url == undefined){
$('#contentHere').load('index.html #content', hijackLinks);
window.location.hash = mainHash;
} else {
$('#contentHere').load(url + '#content', hijackLinks );
}
}
function hijackLinks(e){
var url = e.target.href;
e.preventDefault();
loadPage(e.target.href);
window.location.hash = $(this).attr("href").substring(1);
}
});
我想要的是从网址中删除“#”。我做错了什么,我没有看到/理解什么?
我尝试过 substring/substr 等,并且都做同样的事情,无论我选择在子字符串参数中插入什么数字,它们都会删除除“#”之外的所有内容,哈哈......
好吧,你并没有真正改变链接本身,你只改变了window.location.hash
,并且哈希值始终以“#”开头。
要更改整个网址(并删除“#”),您需要做的是操纵浏览器历史记录 https://developer.mozilla.org/en-US/docs/DOM/Manipulating_the_browser_history.
尽管您应该知道它仅适用于较新的浏览器(确切的浏览器版本在链接中),因此如果您将网站定位到较旧的浏览器,您可能需要考虑使用哈希进行回退。如果您决定采用这样的后备方案,我建议您寻找一个可以完成此操作的插件,而不是自己制作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)