Dojo小部件ID已经注册

时间:2016-10-13 12:31:02

标签: javascript dojo

我读了大约10个这样的错误,但我找不到解决方案。

我在dojo中运行此代码:

this.myHeader = registry.byId("banner");
// returns 'undefined'

if(!this.myHeader) {
    this.myHeader = new Header({ 
        primaryBannerType: 'thin' 
    }, "banner");  
}

我的配置是parseOnLead: true但是我没有手动解析任何文件小部件,所以我认为这没问题。 - 我检查小部件是否已经加载 - 我没有解析小部件两次

为什么我会收到此错误?

Tried to register widget with id==banner but that id is already registered

感谢

1 个答案:

答案 0 :(得分:1)

确保您的网页上没有其他具有相同ID的DOM元素。

我通常使用以下实用程序脚本,它可以非常快速地发现这种问题,并在调试时节省一些时间。

您只需复制并粘贴到开发者控制台(它是一个自我调用函数)。



 (function() {
   var elms = document.body.querySelectorAll('*[id]'),
       ids = [];
   for (var i = 0, len = elms.length; i < len; i++) {
     if (ids.indexOf(elms[i].id) === -1) {
       ids.push(elms[i].id);
     } else {
       console.log('Multiple IDs #' + elms[i].id);
     }
   }
 })();
&#13;
  <div id="a"></div>
  <div id="b"></div>
  <div id="b"></div>
  <div id="b"></div>
  <div id="c"></div>
  <div id="c"></div>
&#13;
&#13;
&#13;

同样在JSFiddle上: https://jsfiddle.net/gibbok/m92pdje4/