我正在为公司开发本地站点(仅限本地内部使用,离线且没有服务器)。我有一个主页面有一个主div,包含3个不同的div。每个div都链接到一个页面和" onclick"每个div的事件将加载链接到主div的页面。所以我必须检查文档就绪功能,如果每个页面都存在,如果没有,我想删除链接到该页面的div。如何检查本地页面是否存在?如果页面存在,我发现有很多回答检查连接状态,但我的html只能在离线和本地工作,所以我无法使用该方法。
编辑 - 已解决
我使用@ che-azeh:
的脚本解决了这个问题function checkIfFileLoaded(fileName) {
$.get(fileName, function(data, textStatus) {
if (textStatus == "success") {
// execute a success code
console.log("file loaded!");
}
});
}
如果文件成功加载,我将更改新隐藏div的内容,该div将告诉另一个脚本是否必须删除三个div中的每一个。
答案 0 :(得分:4)
此函数检查文件是否可以成功加载。您可以使用它来尝试加载本地文件:
function checkIfFileLoaded(fileName) {
$.get(fileName, function(data, textStatus) {
if (textStatus == "success") {
// execute a success code
console.log("file loaded!");
}
});
}
checkIfFileLoaded("test.html");
答案 1 :(得分:3)
我建议您在客户端的计算机上运行本地Web服务器。 (另请参阅下面的本地XHR访问编辑)。
使用本地Web服务器,他们可以像启动应用程序一样启动它。例如,您可以使用节点http-server
。您甚至可以将其安装为node / npm包,这样可以更轻松地进行部署。
通过使用正确的http服务器(在您的情况下是本地),您可以使用xhr请求:
$(function(){
$.ajax({
type: "HEAD",
async: true,
url: "http://localhost:7171/myapp/somefile.html"
}).done(function(){
console.log("found");
}).fail(function () {
console.log("not found");
})
})
另一篇帖子(@ che-azeh)引起了我的注意,firefox 允许XHR文件“protocol”。在撰写本文时,上述内容在firefox中使用url
只有somefile.html
并使用文件方案。
Chrome有一个选项 allow-file-access-from-files (http://www.chrome-allow-file-access-from-file.com/)。这也允许本地XHR请求 此标志用于测试目的:
您应该能够毫无困难地在Google Chrome中运行测试
我仍然建议使用本地Web服务器,因为这会使您独立于这些浏览器标志,并且一旦firefox / chrome决定禁用对此的支持,就可以防止回归。
答案 2 :(得分:0)
您可以尝试在try-catch
构造中加载页面。如果页面存在,则会加载它。如果没有,您可以(在catch
内)将相关div设置为hidden
。
答案 3 :(得分:0)
尝试使用$.ajax
访问该页面。使用error:
选项运行一个回调函数,删除链接到页面的DIV。
$.ajax({
url: "page1.html",
error: function() {
$("#page1_div").remove();
});
您可以在所有DIV上循环使用此代码。
答案 4 :(得分:0)
您可以使用jquery load
函数
$("div").load("/test.html", function(response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
$(this).html(msg + xhr.status + " " + xhr.statusText);
}
});