在Windows Metro应用程序中修改DOM时的HierarchyRequestError

sth*_*sth 8 microsoft-metro winjs

我正在使用Javascript和HTML构建Windows Metro应用程序,它崩溃了HierarchyRequestError:

Exception was thrown but not handled in user code at line 11, column 9 in ms-appx://21706d2f-b81e-47ef-9ebb-37de36c7a258/js/default.js
0x800a139e - JavaScript runtime error: HierarchyRequestError
Run Code Online (Sandbox Code Playgroud)

在抛出错误的行我正在做一些简单的DOM操作并尝试将我创建的节点插入到文档中:

function insertData(hnode) {
    document.querySelector('#datanode').appendChild(hnode);
}
Run Code Online (Sandbox Code Playgroud)

为什么这会因为这样的错误而失败?

sth*_*sth 11

HierarchyRequestError当您尝试将undefinedDOM或其​​他一些无效值插入DOM 时,会抛出A.

在问题中的函数中,hnode可能是undefined,例如因为insertData()没有参数调用.

要调试这样的情况并找出哪个调用insertData()是问题,可以使用Visual Studio中的条件断点.如果设置断点,请右键单击它并选择"条件...".类似的条件hnode === undefined可以用来打破有趣的案例.