繁体   English   中英

维护JavaScript代码 <Head> 在ASP.Net Postback之后。

[英]Maintaining JavaScript Code in the <Head> after ASP.Net Postback.

正如标题所示,我在回发时维护代码时遇到问题。 我在Head部分有一堆jQuery代码,这个工作正常,直到发生回发,之后它停止运行!

我怎样才能解决这个问题? 头部没有在回发上阅读,有没有办法可以强迫这种情况发生?

JavaScript是:

        <script type="text/javascript">
        $(document).ready(function()
        {
            $('.tablesorter tbody tr').tablesorter();

        $('.tablesearch tbody tr').quicksearch({
            position: 'before',
            attached: 'table.tablesearch',
            stripeRowClass: ['odd', 'even'],
            labelText: 'Search:',
            delay: 100
        });
       }); 
        </script>

如果您只是将代码硬编码到页面的头部,那么回发邮件不会影响它。 我会通过调试检查以下内容(FireFox中的FireBug是一个很好的调试器):

  • 验证脚本是否仍在回发中。
  • 验证css类实际上是否附加到页面中的某个元素。
  • 验证浏览器在回发后加载后jquery代码是否正在执行。

编辑:您是否使用UpdatePanels回复邮件? 换句话说,这是异步回发还是普通的整页刷新?

编辑编辑:啊......好吧。 因此,如果您正在使用UpdatePanels,那么文档的就绪状态已经准备就绪,因此不会再次触发jquery代码的一部分。 我会将jquery委托提取到一个单独的函数,您也可以在异步回发后调用它。

把你的代码放进去

function pageLoad(sender, args) {

    /* code here */

}

代替$(document).ready(function() { ... });

pageLoad()是一个将在所有回发,同步和异步之后执行的函数。 有关详细信息,请参阅此答案

我猜测回发预先抢占了页面的onLoad事件,jQuery需要挂钩才能使用它的.ready()。

  1. 回发后脚本中是否存在脚本?
  2. 如果是这样,代码是否被执行? 通过注释掉你的代码进行测试并临时添加alert('test');
  3. 如果是这样,回发后页面上可用的代码引用了哪些元素?

您应该将代码放在名为pageLoad()的函数中,而不是使用$(document).ready。 按照惯例,只要页面有回发/ asyncpostback,就会调用pageLoad()函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM