如果iframe.contentDocument输出为null呢?怎么解决上面这个问题
时间: 2024-11-03 09:19:14 浏览: 16
iframe节点初始化的问题探讨
如果`iframe.contentDocument`返回`null`,这通常意味着`iframe`还未完全加载完毕,因为`contentDocument`只在`iframe`已装载并且跨域策略允许的情况下可用。你可以通过监听`iframe`的`load`事件来确保在内容文档准备好后再进行操作。
以下是修改后的代码片段,加入了`load`事件处理程序:
```javascript
let imgElement = document.createElement("img");
imgElement.src = data.ESURL;
let imgArea = document.createElement("div");
imgArea.classList.add('img-area');
imgElement.addEventListener('load', function() { // 当img元素加载完成
imgArea.appendChild(imgElement); // 添加img到imgArea
// 确保iframe已经加载
const iframeContentLoaded = iframe.contentDocument && iframe.contentDocument.body;
if (iframeContentLoaded) {
const container = iframeContentLoaded.querySelector('#container') || iframeContentLoaded; // 获取container
container.appendChild(imgArea); // 将imgArea添加到container
} else {
console.error("iframe contentDocument is still null. Please check if the iframe has finished loading.");
}
// ...其他的代码...
});
iframe.onload = function() { // 加载完成时隐藏提示
Toast.hide();
};
```
这样,当`iframe`的内容准备好后,才会尝试插入到目标位置。如果始终无法获得`contentDocument`,则会打印错误日志。
阅读全文