【发布时间】:2012-08-02 16:34:41
【问题描述】:
我正在开发一个包含一些动态 jQuery 内容的网站。
如果用户在页面上按下按钮(“显示菜单”),就会运行一个 javascript 函数。让这个函数调用loadMenu()。
loadMenu() 函数使用 ajax 从服务器加载菜单(网络内容)。此加载代码的一部分是 javascript/jquery。此代码的 2 个函数使页面上的某些元素可拖动,另外 2 个函数使网页上的某些元素可拖放。这些函数都是在 $.ready-Time 开始的(如果 DOM 准备好了)。
这一切都很好。
现在我添加了“MenuAlwaysVisible”功能。这意味着:如果网页正在加载并完成(ready),用户不需要按下“显示菜单”按钮,因为如果页面是 readyloadMenu() 现在会自动触发/p>
现在的问题是,看起来可拖动的处理程序已附加并按定义工作,但可放置的处理程序不起作用。
我不确定,但可能droppable 函数在某个时间运行,DOM 元素不喜欢可放置?或者也许其他一些 jQuery 代码会覆盖这个? (但页面上没有其他可放置的元素)?
所以问题是:如何分析这个问题:如何调试 DOM 操作,使用 Windows 和 Firefox/Firebug 或 Safari、Chrome ......随便......
谢谢!
【问题讨论】:
-
getfirebug.com/javascript -- 听起来你只需要学习如何使用逐步调试器。
-
@mblase75 谢谢你的链接 - 我现在就读这个:-)
-
@mblase75 逐步调试器很奇怪(我认为)。看起来,当浏览器读取脚本时,所有功能都被触发了。 (在“脚本解析时间”处停在我的断点处)另一方面,如果加载页面完成,应用程序会挂起,所以我看不到此时会发生什么,当应用程序真正调用功能。 :-/
-
逐行使用javascript调试器需要很多时间来适应,坦率地说,我还没有习惯。但是,如果您的代码作为事件被触发,它仍然无法让您清楚地了解正在发生的事情。也许使用 dev.tools 中的时间线可以帮助您解决这个问题。一种不太复杂的方法是在各个点使用
console.log(string),因为它们会按照它们出现的顺序立即显示在控制台中,而不会像alert()那样中断任何事情。您还可以将整个对象写入console.log,而不仅仅是字符串。
标签: javascript jquery debugging droppable dom-manipulation