JavaScript window.location.href导致焦点停止在控件上工作

时间:2018-07-27 16:42:34

标签: javascript c# html webforms

我有一个正在开发的ASP.NET WebForms应用程序,其中在选择以前的控件或级联控件时添加了控件。我将重点从“后台代码”转移到需要的有效控制上。我也在使用Page.SetFocus(control.ClientID);强制滚动。我遇到了一个问题,即页面并非总是滚动到页面底部,而使所需控件的一半看不见。我实现了以下解决滚动问题的Javascript,但是,控件不再获得焦点了吗?我尝试了一些在这里找到的解决方案,但是似乎没有一个滚动到锚点,而是将焦点放在我想要的控件上。任何事情。任何帮助,将不胜感激!这是代码。

< script >

  $(this).on("load", function() {

    window.location.href = "#invAnchor";

    var h = document.getElementById("lblControl").innerHTML;
    var g = h.id;
    var w = document.getElementById(g);

    w.focus();
  }); <
/script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label id="lblControl" runat="server">SomeControlsIDSetInCodeBehind </label>

<a name="invAnchor" id="invAnchor ></a>

我还尝试过使用ClientScript.RenderClientScriptBlock进行代码隐藏。.

  public static void FocusControlOnPageLoad(string ClientID,
                                        System.Web.UI.Page page)

    {
        //page.RegisterClientScriptBlock
        page.ClientScript.RegisterClientScriptBlock(page.GetType(),"CtrlFocus",

        @"<script> 

  function ScrollView()

  {
     var el = document.getElementById('" + ClientID + @"')
     if (el != null)
     {  
       //this works by itself      
        window.location.href = '"+ ClientID + @"';
       //so does this
        el.scrollIntoView();
        el.focus();
     }
  }



  </script>");
  //added this as a Double PLEASE SET FOCUS... sadly it failed.
        page.SetFocus(ClientID);
    }
}

我在另一篇文章中发现了。

无论如何,都可以设置Focus或Window.Location自行工作。但是我都需要他们两个一起工作。再有什么想法吗?也许我不能两者兼得?谢谢!

0 个答案:

没有答案