Dojo:Dialog刷新TabContainer中的dojox.layout.ContentPane

时间:2012-07-22 14:59:55

标签: internet-explorer-8 dojo

我在Internet Explorer 7/8中遇到Dojo问题(这在Firefox中运行正常)。

基本上我有一个标签容器,里面有很多标签(这些是dojox.layout.ContentPane的)。在其中一个选项卡上,我想要一个“注释框”,它会弹出一个对话框并要求用户放入一些东西。然后通过调用后端来保存注释,我希望选项卡重新加载以显示新评论。

我的保存按钮的逻辑工作原理如下:

<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();准确地说),我在调试中得到的错误消息console是“对方法或属性访问的意外调用”

1 个答案:

答案 0 :(得分:0)

尝试使用您的第tTab.refresh();行:

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

几乎不可能知道引发异常的来源 - 你应该使用开发dojo-1.Mm- src /dojo/dojo.js代码,这样优化的函数和变量名称是扩展(一旦你逐步调试,就会有用的评论)。

以上原因是为了消除,处理按钮onclick-focus事件时会发生异常(刷新会在选项卡中删除DOM - 以及按钮)