【问题标题】:How to debug a Jquery Dialog如何调试 Jquery 对话框
【发布时间】:2011-03-14 09:39:07
【问题描述】:

我有一个相当基本的 jquery 对话框生成器,可以在 3 个位置中的 2 个位置使用。在我尝试使用它的第三个实例中,一旦显示对话框,表单中的字段就会被禁用。

代码背后的一般概念是表单位于网站的不同页面上,为方便起见,启用 javascript 后,您可以单击链接,获取对话框,并执行“在页面上”的任务. 'rel' 属性具有要在 jquery .load 方法中使用的选择器,标题成为对话框标题,'href' 处的页面加载并成为对话框内容。如果关闭 Javascript,您只会得到相同的表单,但包含所有页眉/页脚/菜单内容。

当对话框显示时,我怎样才能知道发生了什么? Firefox 变得迟缓(右键菜单弹出缓慢)并且表单字段被禁用。我只是不知道如何调试它,弄清楚当时发生了什么。 TAB 将选择对话框“关闭”按钮,并将选择其中已经有值的字段,但这就是它结束的地方。 ESC 仍将关闭对话框,因此键盘正在工作。我发现另一个人报告了类似的问题CkEditor Bug,他们似乎已经解决了这个问题,但我不知道他们是怎么做到的。

在我忘记之前:JQuery 1.4.2 JQueryUI 1.8.2

网址如下:

<a class='dialog' href='/messages/compose/fsm92766/' rel = ' #compose-message' title='Send Message to'>Send Message To</a>

设置代码如下:

    <script lanaguage='javascript'> 
    $(document).ready(function() {
        $('a.dialog').each(function() {
            var $link = $(this);
            var $dialog = $('<div></div>')
                .dialog({
                    autoOpen: false,
                    title: $link.attr('title'),
                    modal: true,
                    resizable: false,
                    width: 'auto',
                    position: 'center'
                });

            $link.click(function() {
                var $url = $link.attr('href') + $link.attr('rel');
                $dialog.html($url + "<br/>" +"<img src='http://ender.intomec.com/static/images/loading.gif'></img>");
                $dialog.load($url)
                $dialog.dialog('open');
                return false;
            })
        })
    });
</script> 

对话框 html 看起来像:

<html>blah blah blah
<body>blah blah blah

-------------- JQuery Selector extracts this part from the page ----------------
<div id='compose-message'>
    <form action="" method="post" class="uniForm">
        <div style='display:none'>
            <input type='hidden' name='csrfmiddlewaretoken' value='3c55a464683748b20a0e6abbcd22225d' />
        </div>      
        <fieldset class="inlineLabels">
            <div id="div_id_recipient" class="ctrlHolder ">
                <label for="id_recipient">Recipient<span>*</span></label>
                <input id="id_recipient" type="text" class="commaseparateduserinput" value="fsm92766" name="recipient" />
            </div>
            <div id="div_id_subject" class="ctrlHolder ">
                <label for="id_subject">Subject<span>*</span></label>
                <input id="id_subject" type="text" class="textinput textInput" name="subject" />
            </div>
            <div id="div_id_body" class="ctrlHolder ">
                <label for="id_body">Body<span>*</span></label>
                <textarea id="id_body" rows="12" cols="55" name="body" class="textarea"></textarea>
            </div>
            <div class="form_block">
                <input type="submit" value="Send &raquo;"/>
            </div>
        </fieldset>
    </form>
</div>
----------------------------------
blah blah blah
</body>
</html>

【问题讨论】:

  • 我会认真考虑其他人对Firebug的建议。原因是调试别人的代码很烦人。但是,教一个人钓鱼,他的余生都不会挨饿。我们很乐意为 Firebug 提供后续帮助。 编辑:我误解了你的意图;你实际上是在询问如何调试。对你有益。我会把这条评论留给后人,因为这对许多人来说是一个重要的教训。
  • 我有firebug,用了很久了。我只是不知道从哪里开始。我可以设置断点,但是在哪里,如何中断执行以查看它在哪里花费时间。我试过 Chrome 时间轴,它没有显示。一段时间后,右键单击主题将使光标出现在那里,但您所能做的就是选择一些“记住”的文本。你不能打字,左键什么也没做。

标签: jquery python django jquery-ui


【解决方案1】:

Firefox 的 Firebug 扩展非常适合调试 javascript。

【讨论】:

  • 是的,只要你知道去哪里看,它是一个非常有用的调试器。但是,我认为 firebug 没有 Chrome 时间轴之类的功能,而且也没有多大帮助。
【解决方案2】:

只是为了确定一下,您使用的是 Firebug
https://addons.mozilla.org/en-US/firefox/addon/1843/

它是调试 javascript 的福音,特别是如果您使用的是 firefox,它们也有适用于其他浏览器的“精简版”版本。据我所知,它是事实上的 javascript 调试器。

Firebug 添加了 FireQuery 以增强 jQuery https://addons.mozilla.org/en-US/firefox/addon/12632/ 的调试功能

【讨论】:

  • 我用的是firebug,不知道怎么看挂在哪里? JQUERY 有很多代码,我不知道如何分析该代码以查看时间花在了哪里。
  • 我不认为你看起来很努力。我刚刚在 jquery profiling 上搜索了一下,并在 getfirebug.com/javascript 的首页上获得了成功。向下滚动到显示(喘气!)“Profile Javascript Performance”的位置。您转到控制台选项卡,单击配置文件,然后重新加载页面,然后再次单击配置文件。您可以很好地了解所有呼叫、呼叫次数、总时间、yada yada。
  • 你知道我完全错过了控制台下的配置文件按钮,尽管我经常使用它。感谢您指出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2011-02-25
  • 2014-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多