在加载页面之前是否可以检查页面的辅助功能?
我有一张表格,使用无线连接在移动设备上运行。问题是:并非总是可以使用此连接,我想在提交或卸载页面时提醒用户。
问题是该页面包含执行重定向的元素,如下所示:
<input type="button" value="MyText" onClick="script1;script2;...window.location='mylocation'" />
如果用户点击此按钮并且服务器无法实现,我将会发现一些不可忽视的错误。
另外,如果我想概括我的脚本,我以前不知道“mylocation”的价值。
该页面还包含提交表单的元素:
<input type="submit" name="SUBMIT" value="MyValue" onClick="return eval('validationForm()')" />
对于提交我正在使用 ajaxForm 插件,它运行良好。
答案 0 :(得分:3)
导航回来很容易使用它:
<input type="button" value="Back" onClick="window.location='history.go(-1);" >
其中-1表示上一页。如果要重新加载当前页面,请使用0,向前导航,使用1等
如果你使用来自jquery的ajax,它可以自己处理它... http://api.jquery.com/jQuery.ajax/
$.ajax({
///... need argument here...
timeout: 5000, // in milliseconds
success: function(data) {
//Do something success
},
error: function(request, status, err) {
if(status == "timeout") {
alert("can't reach the server");
}
}
});
评论后编辑: 你可以查看How do I check if file exists in jQuery or JavaScript? 在你的情况下,这可以按预期工作:
//Initialize the var as global so you can use it in the function below
var goto_url = "http://www.mywebsites.com/foo.html";
$.ajax({
url:goto_url;
type:'HEAD',
error: function()
{
//do something if the gile is not found
},
success: function()
{
document.location = goto_url; //docuemnt.location will redirect the user to the specified value.
}
});
这实际上会检查文件是否存在..如果它无法连接到文件,它将无法找到它.. 如果他能找到该文件,他显然能够连接,所以无论哪种情况你都赢了。
喝彩!
答案 1 :(得分:1)
您应该使用jQuery Ajax函数的回调来捕获服务器不可用的问题。
您无法在不向其提出请求的情况下检查服务器的可用性。
答案 2 :(得分:1)
感谢您的回答,我找到了问题的解决方案。 在启动脚本和重定向之前,检查服务器是否可以实现。 那是代码:
function checkConnection(u,s){
$.ajax({
url:u,
cache:false,
timeout:3000,
error: function(jqXHR, textStatus)
{
alert("Request failed: " + textStatus );
},
success: function()
{
eval(s);
}
});
}
$(document).ready(function() {
// part of the function that checks buttons with redirect
// for any button that contain a redirect on onClick attribute ("window.locarion=")
$("input[type=button]").each(function(){
var script = $(this).attr("onClick");
var url = "my_url";
var position = script.indexOf("window.location") ;
if (position >= 0) { // case of redirect
url = "\'"+url+"\'"; // that's my url
script = "\""+script+"\""; // that's the complete script
$(this).attr("onClick","checkConnection("+url+","+script+")");
}
});
// part of the function that checks the submit buttons (using ajaxForm plugin)
var options = {
error: function() {
alert("Message Error");
},
target: window.document,
replaceTarget: false,
timeout: 3000
};
$("form").ajaxForm(options);
});
我希望这会有用。
答案 3 :(得分:0)
您正在尝试查看是否存在连接。 AFAIK实际检查服务器是否可访问的唯一方法是向该服务器发出请求。
设置一个相当短的时间(比如3s)的超时并发出请求。如果您收到超时错误,则表示没有连接,否则您最好发送表单。