HTMLElement上的innerHTML和outerHTML属性返回undefined,没有错误

时间:2017-11-29 20:09:46

标签: javascript html typescript react-native html-parsing

目标:将HTML作为字符串,在其中编辑图像标记的某些属性,将HTML作为字符串返回。

我的功能如下:

private resolveImagesInHTML (body: string): string {

    let htmlParser = new domParser.DOMParser();     // from react-native-html-parser
    let parsedDOM: HTMLDocument = htmlParser.parseFromString('<html>' + body + '</html>', 'text/html');

    // ------- code to modify DOM goes here -------

    return parsedDOM.documentElement.innerHTML;
}
  

问题:如果我在调试控制台中打印parsedDOM或parsedDOM.documentElement,   它正确显示修改后的HTML内容。出奇,   innerHTML或outerHTML属性不会抛出任何错误但会返回   &#39;未定义&#39;

我明显的猜测是,在修改我的代码时,我可能搞砸了HTML的格式,但即使我在我的函数内部评论除了上面三行之外的所有内容,行为仍然是相同的。

我可能在这里做错了什么? 谢谢,我对React-Native和打字稿都很陌生,所以如果我在这里错过了一些微不足道的事情,我会感到很惊讶。

1 个答案:

答案 0 :(得分:0)

htmlParser.parseFromString

返回看起来像DOM的东西,它有一些与DOM共同的方法,但不是全部。它没有.innerHTML。真正的浏览器DOM拥有它。

从这里写的https://www.npmjs.com/package/react-native-html-parser innerHTML不可用

那为什么不抛出错误?因为这就是JavaScript对象的工作方式。

console.log({}.innerHTML) // No Error

如何强制出错?

有两种解决方案,一种是使用严格模式并在控制台中启用严格模式警告。另一个是用Proxy包装的东西,例如检查hasOwnProperty