カレンダープラグインのバージョン:CURRENT RELEASE 1.2.1
grailsプラグインのドキュメントに記載されている手順に従いましたが、すべての種類のブラウザで次のエラーが発生します
Chrome 14.0835:Uncaught RangeError:最大コールスタックサイズを超えました。
Firefox 6.02:再帰calendar.jsの1851行が多すぎます
IE 9:スタックスペース不足calendar.js行1850
カレンダープラグインのバージョン:CURRENT RELEASE 1.2.1
grailsプラグインのドキュメントに記載されている手順に従いましたが、すべての種類のブラウザで次のエラーが発生します
Chrome 14.0835:Uncaught RangeError:最大コールスタックサイズを超えました。
Firefox 6.02:再帰calendar.jsの1851行が多すぎます
IE 9:スタックスペース不足calendar.js行1850
問題のある jscalendar コードは次のとおりです。
Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
Date.prototype.setFullYear = function(y) {
var d = new Date(this);
d.__msh_oldSetFullYear(y);
if (d.getMonth() != this.getMonth())
this.setDate(28);
this.__msh_oldSetFullYear(y);
};
を再定義しDate.setFullYear()
ます。この「古い jscalendar」ページのコメント #124 と #125 をご覧ください。
コメント #124 (Chris Lively による)
calendar.js の更新を提案します (一番下、~1850 行目)。
再帰エラーが発生する場合。数行コメントするだけです。下記参照。
//Date.prototype.msh_oldSetFullYear = Date.prototype.setFullYear; Date.prototype.setFullYear = function(y) { var d = new Date(this); //d.msh_oldSetFullYear(y); if (d.getMonth() != this.getMonth()) this.setDate(28); //this._msholdSetFullYear(y); };
コメント #125 (larisa からの返信)
再帰の問題は、ページにカレンダー JavaScript が複数含まれているために発生します。その結果、Date パッチは setFullYear 関数を 2 回再定義し、実行時に無限ループを引き起こします。関数が一度だけ再定義されるように修正しました。
if(Date.prototype.msh_oldSetFullYear == null) { Date.prototype.msh_oldSetFullYear = Date.prototype.setFullYear; }
これらは両方とも、calendar.js の更新を提案しますが、これはプラグインで提供されるため理想的ではありません。
2 つの提案:
<calendar:resources/>
メイン レイアウトとビュー GSPにがありますか? その場合は、そのうちの 1 つを削除します。これは私のために働く:
if (Date.prototype.__msh_oldSetFullYear == null) {
Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
}
Date.prototype.setFullYear = function(y) {
var d = new Date(this);
Date.prototype.__msh_oldSetFullYear.apply(d, arguments);
if (d.getMonth() != this.getMonth())
this.setDate(28);
Date.prototype.__msh_oldSetFullYear.apply(this, arguments);
};
私は同じ問題に直面してい<calendar:resources/>
ました。メインのjspと、jspでレンダリングされたテンプレートに配置しました。それらの1つを削除すると、問題が解決しました。
この問題を解決した方法は
1) プラグインのソースをダウンロードしました 2) ローカルで同じ名前のプラグインを作成しました。3) 元のソース ファイルを作成したローカル プラグインにコピーした 4) 上記のように JavaScript ファイルを変更した 5) プラグインをコンパイルしてパッケージ化した 6) メイン プロジェクトの古いプラグインを削除した 7) 新しく作成したプラグインを zip ファイルからインストールした手順 5 から作成されます。
それは魅力のように機能しました。
javascript ファイルのどこにコメントすればよいか教えてくれた Rob Hruska に感謝します。