0

Internet Explorer 7/8 で Dojo に問題があります (これは Firefox で正常に動作します)。

基本的に、いくつかのタブを含むタブ コンテナーがあります (これらは dojox.layout.ContentPane のものです)。これらのタブの1つに、ダイアログをポップアップしてユーザーに何かを入力するように求める「コメントボックス」が必要です。コメントはバックエンドへの呼び出しによって保存され、タブをリロードして表示します新しいコメント。

私の保存ボタンのロジックは次のように機能します。

<button data-dojo-type="dijit.form.Button" type="button" data-dojo-props="iconClass:'dijitIcon dijitIconSave', showLabel: true" title="Add your comment">Add Comment
    <script type="dojo/on" data-dojo-event="click" data-dojo-args="evt">
      require(["dojo/dom"], function(dom)
      {
        var tText = dijit.byId('comment_70').get('value');
        if (tText == '')
        {
          alert('You have not entered any comment');
          return;
        }
        var tJSONRPC = new JSONRpcClient('JSON-RPC');
        try
        {
          tJSONRPC.be.addComment('70', tText);
          var tTab = dijit.byId('Detail_70');
          tTab.refresh();
        }
        catch (Ex)
        {
          alert(Ex);
        }
      });
    </script></button>

ひどい負担ではないようです (最後の 70 は ID であり、ユーザーはこれらを同時に複数開くことができるため、タブが表示されます)。

前述のように、これは Firefox では正常に機能しますが、IE 8/7 では機能しません。Dojo 内で生成されたコードの一部 (正確には _32.focus();) でエラーがスローされ、デバッグ コンソールに表示されるエラー メッセージは "メソッドまたはプロパティ アクセスへの予期しない呼び出しです」

4

1 に答える 1

0

あなたの行でこれを試してくださいtTab.refresh();

setTimeout(function() { tTab.refresh(); }, 0); // whenIdle

スローされた例外がどこから来たのかを知ることはほとんど不可能です - 最適化された関数名と変数名が展開されるように、開発用の dojo-1.Mm- src /dojo/dojo.js コードを使用する必要がありますスルーデバッグ)。

上記の理由は、ボタンの onclick-focus イベントの処理中に例外が発生することを排除することです (更新により、タブ内の DOM がボタンと共に破棄されます)。

于 2012-07-23T20:18:02.333 に答える