目标:将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和打字稿都很陌生,所以如果我在这里错过了一些微不足道的事情,我会感到很惊讶。
答案 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
。