DebugKit+IEでのエラー緩和
CakePHPでの開発に非常に便利なDebugKit。
しかし、IE*1でのみ、謎のエラーが発生する場合があります。
CakePHP1.2の頃は、そもそもIEでは動作しなかったのですが、
その対応用のパッチを当てると、1.3用で発生しているエラーも多少緩和されるようです。
(追記:ID不正?エラーは直りきってませんでした。まだ出ます・・・)
発生している主な現象
- http://domain/controllers/view/[ID] へのリンクを押すと、「ID不正」のエラーメッセージが出る場合がある*2
- 全ページで「1ライン1文字目」の構文エラーが発生*3
いずれも、CakePHPのdebug設定を0にするなど、DebugKit自体を無効にすれば発生しません。
検索すると、以下のパッチがありました。
BLOG - siwa32.com
CakePHP1.3対応用のDebugKitでも、当該箇所には変更がないようなので、同様に修正してみました。
これでとりあえず、「ID不正のエラーメッセージが出る」ことがなくなったようです。
@@ -496,7 +496,7 @@ DEBUGKIT.toolbar = function () {
Use event delegation to find original target.
*/
function _delegateNeatArray (event) {
- var clickedEl = event.target;
+ var clickedEl = event.target || event.srcElement;
while (!Element.nodeName(clickedEl, 'LI')) {
clickedEl = clickedEl.parentNode;
}
@@ -580,8 +580,13 @@ DEBUGKIT.toolbar = function () {
var self = this;
Event.addEvent(panel.button, 'click', function (event) {
- event.preventDefault();
- return self.togglePanel(panel.id);
+ if (event.preventDefault) {
+ event.preventDefault();
+ } else {
+ // IE
+ event.returnValue = false;
+ }
+ return self.togglePanel(panel.id);
});
this.panels[panel.id] = panel;
return panel.id;
@@ -736,7 +741,12 @@ DEBUGKIT.toolbarToggle = function () {
self = this;
Event.addEvent(button, 'click', function (event) {
- event.preventDefault();
+ if (event.preventDefault) {
+ event.preventDefault();
+ } else {
+ // IE
+ event.returnValue = false;
+ }
self.toggleToolbar();
});
私もそうですが・・・
自分がIE使わないから、IEエラーをまるっと見逃したモノを作ってしまうこと、ままありますね・・・・