Tag: 调试

jQuery断言支持/防御性编程?

jQuery中是否有任何内置支持用于基本断言检查,主要是“预期的返回元素数量”等内容。 例如,我可能有这样一个简单的声明: $(“#btnSignup”).click(function() { return validateForm(); ); 现在有很多理由说明$(“#btnSignup”)可能无法正确返回1项: 您错误输入了按钮ID名称 有人错误地重命名了 它不存在于页面上 错误地有两个带有id的元素 您正在使用ASP.NET MVC,并且您不小心使用HtmlHelper.Button(…)而不是HtmlHelper.Submit()为按钮生成了HTML。 Button(…)方法不会为按钮元素创建ID。 现在在这个实例(和许多实例)中,我的应用程序根本无法工作,除非从选择器返回一个项目。 所以我总是想告诉你$(“@#btnSignup”)是不是只返回1项。 那我怎么能这样做?! 我很好,如果这是一个例外或最好是一个警告框 – 所以如果我没有在调试器中运行,那么我可以被告知。 我正在寻找像这样的语法 – 它的function类似于.NET的Single()扩展方法。 $(“#btnSignup”).assertSingle().click(function() { return validateForm(); ); or $(“#btnSignup”).assertSize(1).click(function() { return validateForm(); ); 我个人很好,因为这段代码总是运行并告诉那里有谁有问题。 对于所有永恒运行这个额外代码显然不是性能问题 。 在这种情况下,如果#btnSignup不存在,我的代码就会被破坏。 我确信这个问题已经被打死了,并且有很多解决方案 – 但是有人能指出我的一些吗? 我没有看到任何内置于jQuery中的内容,并想知道最好的插件是什么。 我宁愿只是在页面上有一些可以“监视”我的东西并告诉我是否有问题。 我甚至不反对对错误报告服务进行AJAX调用。

Javascript vs. IE8 – 预期的标识符,字符串或数字

不,这不是一个额外的逗号。 这是给我问题的剪辑。 $(document).ready(function(){ $(“div#slider”).easySlider({ auto: false, continuous: true, nextId: “nextBtn”, prevId: “prevBtn” }); $(“div#slider-banner”).easySlider({ auto: true, continuous: true, controlsShow: false }); // <———————————- Line 14 $("div#slider-photos").easySlider({ auto: true, continuous: true, controlsShow: false }); $("#marquee").marquee({ scrollSpeed: 25, pauseSpeed: 2000, showSpeed: 850 }); }); 错误详情 User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET […]

使用jquery增加内存使用量

我正在开发一个大量使用jquery(UI)的站点,以提供良好的用户体验。 对于某些(愚蠢的)原因,此站点的部分显示在iframe中,并且还有一个用于刷新iframe的按钮以从服务器获取最新数据。 问题是每次刷新iframe时内存使用量都会增加,导致一段时间后出现严重的内存问题(在IE8和9中测试过)。 但这只有在加载jquery库时才会发生。 使用Drip / Sieve时,可以最好地看到此行为。 为了更好地理解这个问题,我删除了导致下面两个文件的所有不必要的代码。 每次重新加载时,内存使用量增加约800 kb。 (如果要重现,请尝试http://jsbin.com/asamid/7 ) 我怎样才能防止jquery吞噬我的记忆? 有没有办法在重新加载之前手动卸载所有jquery? index.htm :(见http://jsbin.com/asamid/7/edit#html,live ) Memory Leak – Parent function reload() { var frame = document.getElementById(“testFrame”); frame.src = “frame.htm”; } reload frame frame.htm :(见http://jsbin.com/ocuval/edit#html,live ) Memory Leak – Frame Test Frame lorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsumlorem ipsum

在script.aculo.us中使用jQuery noConflict()

我有一个使用“widget”(来自http://healcode.com )的网站,其中包含script.aculo.us JavaScript库。 问题是我正在构建的网站是在WordPress上,所以有经典的jQuery vs script.aculo.us冲突。 我知道我需要在.noConflict()模式下运行jQuery,但我必须得到错误的语法。 当我按如下方式将$分配给jQuery .noConflict ,它仍会关闭script.aculo.us函数: var $ = jQuery.noConflict(); $(document).ready(function () { //#nav-main dropdown effects $(‘#nav-main ul li’).hoverIntent(function () { $(this).find(‘.dropdown’).stop(true,true).slideDown(‘900’); }, function(){ $(this).find(‘.dropdown’).stop(true,true).slideUp(‘500’); }); }); // end document.ready 我知道我在.noConflict()模式下将$分配给jQuery,我假设script.aculo.us(通过主体中的小部件加载,因此在jQuery之后)试图重新分配$ back to script.aculo.us。 如何以稍后加载的script.aculo.us库不会冲突的方式将$分配给jQuery? 我已经尝试了以下但没有任何成功(以下代码导致script.aculo.us工作,但jQuery失败): jQuery(document).ready(function () { //#nav-main dropdown effects jQuery(‘#nav-main ul li’).hoverIntent(function () { jQuery(this).find(‘.dropdown’).stop(true,true).slideDown(‘900’); }, function(){ jQuery(this).find(‘.dropdown’).stop(true,true).slideUp(‘500’); […]

Internet Explorer表示Object不支持此属性或方法

这条线是79: window.addEvent(‘domready’, function(){ mySlide = new Fx.Slide(‘advert’); mySlide.hide(); }); 它也不喜欢这一行: this.wrapper = new Element(‘div’, { ‘styles’: $extend( this.element.getStyles(‘margin’), {‘overflow’: ”} ) }) .injectAfter(this.element) .adopt(this.element); 有谁知道为什么会这样? 有谁知道如何解决这一问题? 我正在使用jQuery和Mootools ..并且想要一个解决方案。

如何知道哪个文件或脚本正在运行当前元素?

假设,我有一个滑块,其中包含一个javascript文件和我想要更改的脚本,但有多个文件包含此javascript文件。 所以现在我想知道哪个文件或脚本确实已经运行到当前元素ie slider 。 有什么方法可以知道吗?

通过jQuery添加的脚本标记在FireBug中不可见

我通过jQuery将到文档头。 这是我使用的代码: $(document).ready(function () { var s = document.createElement(“script”); s.type = “text/javascript”; s.src = (document.location.protocol == “https:” ? “https://ssl” : “http://www”) + “.google-analytics.com/ga.js”; $(“head”).append(s); }); 虽然脚本似乎运行得很好,但是当我使用FireBug检查文档头时,我看不到头部中的脚本。 此代码段不会显示添加的脚本: $(‘script[src]’).each(function(){ console.log(this.src); }); 这是正常的还是我在这里做错了什么? 困扰我的是,我在head部分看到其他脚本是懒惰/动态加载但不是我添加的那些脚本。 还想知道在文档就绪函数中加载操作DOM的脚本是否可以。 UPDATE 替换代码: $(“head”).append(s); 至 document.getElementsByTagName(“head”)[0].appendChild(s); 解决了这个问题。 生成的DOM在FireBug中正确显示,jQuery正确返回静态/动态添加的脚本标记。

调试时如何忽略某些脚本文件/行?

我正在尝试调试一些JavaScript,我想知道当我将鼠标hover在某个div元素上时会执行什么代码(我不知道哪些代码,因为没有直接’onmouseover’ – 我认为有一个jQuery选择器在某处?)。 通常我会使用Developer Tools / Firebug提供的“Break All”/“Break On Next”工具,但我的问题是其他代码(代码,鼠标移动监听器等)会立即被捕获。 我想做的是告诉调试器忽略某些JavaScript文件或单独的行,这样它就不会停止在我不感兴趣或已排除的代码上。 有没有办法在IE中实现这一点( 吐,吐! ) – 或者你能建议一个更好的方法吗?

使用Firebug调试JavaScript事件

我需要为某个事件设置断点,但我不知道,它在哪里定义,因为我有一大堆最小化的JavaScript代码,所以我无法手动找到它。 是否有可能以某种方式设置断点,例如具有ID registerButton的元素的click事件,或者找到哪个函数绑定到该事件? 我找到了Firefox附加的Javascript Deobfuscator ,它显示了当前执行的JavaScript,这很好,但我需要调试的代码是使用jQuery ,因此即使在最简单的事件上也有大量的函数调用,所以我不能使用它无论是。 是否有专门为jQuery制作的调试器? 有没有人知道一些工具将缩小的JavaScript重新转换为格式化代码,如turn function(){alert(“aaa”);v=3;}返回 function() { alert(“aaa”); v = 3; }

如何在PHP中获取有用的错误消息?

我觉得用PHP编程非常令人沮丧。 我经常尝试运行脚本,然后再回一个空白屏幕。 没有错误信息,只是空屏幕。 原因可能是一个简单的语法错误(错误的括号,缺少分号),或者函数调用失败,或者其他完全错误。 弄清楚出了什么问题是非常困难的。 我最终评论出代码,在所有地方输入“echo”语句,等等。试图缩小问题范围。 但肯定有一个更好的方法,对吗? 那么,有没有办法让PHP产生像Java那样有用的错误信息呢? 任何人都可以推荐良好的PHP调试技巧,工具和技术?