运行javascript befor页面满载

时间:2017-05-19 17:46:49

标签: javascript jquery

我有一个母版页和子页面 菜单位于母版页上 我通过Ajax调用来获取隐藏菜单链接的权限。

$.ajax({

  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "Query.asmx/GetUserPermissions",
  data: "{}",
  dataType: "json",
  success: function (Result) {
    Perms = Result.d;
    var pageName = location.pathname.substring(1).toLowerCase();
    if (Perms.indexOf('4') != -1) {
      $("#liCars").show();
    }
    else {
      if (pageName == 'webform2') {
        window.location = 'default.aspx'
      }
    }
  },
  error: function (Result) {
    alert(Result.d);
  }
});

那么问题是什么? 问题是如果用户在没有菜单的情况下键入url,页面会在重定向到默认值之前完全加载。
我认为这是正常的,因为它是在document.ready上 我在ready()之外尝试过,但li不存在......所以隐藏或显示不起作用。

1 个答案:

答案 0 :(得分:0)

我认为您应该从html文件中剪切完整菜单html,并在需要时使用append();来显示它。这样它就会显示,直到javascript加载为例:

$.ajax({

  type: "POST",
  contentType: "application/json; charset=utf-8",
  url: "Query.asmx/GetUserPermissions",
  data: "{}",
  dataType: "json",
  success: function (Result) {
    Perms = Result.d;
    var pageName = location.pathname.substring(1).toLowerCase();
    if (Perms.indexOf('4') != -1) {
      $("#mydiv").append('<menu>menu items html</menu>');
    }
    else {
      if (pageName == 'webform2') {
        window.location = 'default.aspx'
      }
    }
  },
  error: function (Result) {
    alert(Result.d);
  }
});