gpt4 book ai didi

javascript - 为什么这不起作用?

转载 作者:行者123 更新时间:2023-11-30 06:05:56 24 4
gpt4 key购买 nike

我正在尝试使用 AJAX 实现类似 Facebook 的页面导航。我写了下面的代码。

if ("onhashchange" in window) {
window.onhashchange = function () {
locationChanged(window.location.href);
}
}
else {
var storedURL = window.location.href;
window.setInterval(function () {
if (window.location.href != storedURL) {
storedURL = window.location.href;
locationChanged(storedURL);
}
}, 250);
}

function locationChanged(e) {
if (window.location.href.include('#!')) {
var paths = window.location.href.split("#!");
if (paths.length >= 2) {
var pos = paths.length - 1;

if (paths[pos].startsWith("/"))
paths[pos] = paths[pos].substr(1);

$('#holder').load(paths[pos]);
}
}
else {
if (window.location.href.endsWith('Index.html')
|| !window.location.href.endsWith('.html')) {
//this is first page
redirect("Login.html");
}
}
}

$(document).ready(function() {
if (window.location.href.endsWith('Index.html')
|| !window.location.href.endsWith('.html')) {
//this is first page
redirect("Login.html");
}

captureLinks();
});

function captureLinks() {
$('a').click(function(e) {
e.preventDefault();
redirect($(this).attr("href"));
});
}

function redirect(page) {
var path = page;

if (window.location.href.include('#!')) {
var paths = window.location.href.split("#!");

var pos = paths.length - 2;

if (!paths[pos].endsWith("/"))
paths[pos] += "/";

if (!page.startsWith("/"))
page = "/" + page;

path = paths[pos] + "#!" + page;
}
else {
if (path.endsWith(".html"))
path = window.location.href.trimEndTill("/");
else
path = window.location.href;

if (!path.endsWith("/"))
path += "/";

if (!page.startsWith("/"))
page = "/" + page;

path += "#!" + page;
}

window.location.href = path;
}

好的一点是代码可以工作,但它有一个唯一的问题。有一个 Index.html 页面,它是应用程序的主要入口页面,当我写的时候说...

http://localhost:8081/

它将它转换为...

http://localhost:8081/#!/Login.html

这是完美的。但是当我指着它说...

http://localhost:8081/Index.html

它正在制作...

http://localhost:8081/Index.html/#!/Login.html

这会产生 404 错误,因为没有名为“Index.html/”的页面。我修改了代码,以便它可以检测到 Index.html 并在将其指向 Login.html 之前先将其删除。尽管代码现在给出了正确的结果,即使使用 Index.html 作为...

http://localhost:8081/#!/Login.html

但问题是,它永远不会使用 $.load 函数在正文中加载该页面 (Login.html)。有什么不对的吗?我还想知道我的代码是否足够高效?

最佳答案

您真正需要的是 jQuery Address plugin . ( samples )

关于javascript - 为什么这不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com