目标:将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.documentement, 它正确显示了修改的HTML内容。出奇, Innerhtml或OuterHTML属性不会丢任何错误,但是返回 "未定义"。
我明显的猜测是,在修改代码时,我可能已经弄乱了HTML的格式,但是即使我在功能中发表了所有内容,除了上面的三行,行为仍然相同。
我可能在这里做错了什么?谢谢,我对反应和打字稿非常陌生,所以如果我在这里错过了一些微不足道和明显的东西,我就不会感到惊讶。
htmlParser.parseFromString
返回看起来像DOM的东西,这些东西与DOM有一些共同的方法,但并非全部。它没有.innerHTML
。真正的浏览器DOM具有它。
从这里写的内容https://www.npmjs.com/package/reaect-native-html-parser innerhtml不可用
那么为什么不丢失错误呢?因为那是JavaScript对象的工作方式。
console.log({}.innerHTML) // No Error
如何强制错误?
有两种解决方案,一种是使用严格的模式并在控制台中启用严格的模式警告。另一个是用Proxy
s包装的东西,例如检查hasOwnProperty
的检查。