Anytime.js Javascript Datepicker投掷控制台错误

时间:2011-12-28 02:21:08

标签: javascript jquery wordpress debugging

我正在使用为我定制开发的WordPress插件的anytime.js datepicker库。我之所以这么说是因为我不是原始的开发人员而且我害怕删除它并替换它,以防它意味着替换对该库独有的函数的大量调用。

您可以在此处查看该库:http://www.ama3.com/anytime/

不幸的是,从版本3.3开始,该库正在破坏WordPress后端的一些关键功能。我已经确认禁用该库可以完全解决问题。

Google Chrome的控制台会引发以下错误:

Uncaught TypeError: Cannot read property 'left' of null
AnyTime.picker.__pickers.(anonymous function).posanytime.js:3032
AnyTime.picker.__pickers.(anonymous function).initializeanytime.js:1858
f.event.dispatchload-scripts.php:3
f.event.add.h.handle.iload-scripts.php:3
f.event.triggerload-scripts.php:3
f.fn.extend.triggerHandlerload-scripts.php:3
(anonymous function)load-scripts.php:3
f.Callbacks.nload-scripts.php:2
f.Callbacks.o.fireWithload-scripts.php:2
e.extend.readyload-scripts.php:2
c.addEventListener.B
anytime.js行3032 var left = off.left的以下行(3027 - 3039)中的

是根据控制台的违规行代码:

        if ( this.pop )
        {
          var off = this.inp.offset();
          var bodyWidth = $(document.body).outerWidth(true);
          var pickerWidth = this.div.outerWidth(true);
          var left = off.left;
          if ( left + pickerWidth > bodyWidth - 20 )
            left = bodyWidth - ( pickerWidth + 20 );
          var top = off.top - this.div.outerHeight(true);
          if ( top < 0 )
            top = off.top + this.inp.outerHeight(true);
          this.div.css( { top: String(top)+'px', left: String(left<0?0:left)+'px' } );
        }

有没有人建议如何调试?

1 个答案:

答案 0 :(得分:1)

问题是页面正在尝试为不存在的字段创建选择器。 问题的原因不在anytime.js 之内,而是在内联脚本内部(特别是浏览器报告的edit.php第54和55行)。

无论日期字段是否存在,似乎都会为每个页面调用相同的选择器创建代码。页面不应该尝试为不存在的字段创建选择器!