1

カレンダープラグインのバージョン:CURRENT RELEASE 1.2.1

grailsプラグインのドキュメントに記載されている手順に従いましたが、すべての種類のブラウザで次のエラーが発生します

Chrome 14.0835:Uncaught RangeError:最大コールスタックサイズを超えました。

Firefox 6.02:再帰calendar.jsの1851行が多すぎます

IE 9:スタックスペース不足calendar.js行1850

4

4 に答える 4

4

問題のある 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 つの提案:

  • カレンダー リソースを 2 回インポートしていないことを確認してください。<calendar:resources/>メイン レイアウトビュー GSPにがありますか? その場合は、そのうちの 1 つを削除します。
  • それでもうまくいかない場合は、おそらく別のプラグインを使用してください。カレンダー プラグインはしばらく更新されていないようです (古いバージョンの jscalendar を使用しています)。意欲的な方は、プラグインを自分で更新してみてください!
于 2011-09-26T13:47:30.927 に答える
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);
};
于 2012-09-04T05:04:00.700 に答える
0

私は同じ問題に直面してい<calendar:resources/>ました。メインのjspと、jspでレンダリングされたテンプレートに配置しました。それらの1つを削除すると、問題が解決しました。

于 2016-10-03T10:47:51.480 に答える
0

この問題を解決した方法は

1) プラグインのソースをダウンロードしました 2) ローカルで同じ名前のプラグインを作成しました。3) 元のソース ファイルを作成したローカル プラグインにコピーした 4) 上記のように JavaScript ファイルを変更した 5) プラグインをコンパイルしてパッケージ化した 6) メイン プロジェクトの古いプラグインを削除した 7) 新しく作成したプラグインを zip ファイルからインストールした手順 5 から作成されます。

それは魅力のように機能しました。

javascript ファイルのどこにコメントすればよいか教えてくれた Rob Hruska に感謝します。

于 2011-09-27T08:15:47.110 に答える