我正在尝试使用TensorFlow.js的tf.browser.fromPixels()
函数。不幸的是,我收到以下错误:
backend_webgl.ts:309 Uncaught Error: The DOM is not ready yet. Please call tf.browser.fromPixels() once the DOM is ready. One way to do that is to add an event listener for `DOMContentLoaded` on the document object
at e.fromPixels (backend_webgl.ts:309)
at t.fromPixels (engine.ts:870)
at fromPixels_ (browser.ts:55)
at Object.fromPixels (operation.ts:45)
at ex4.html:10
但是我从传递给
tf.browser.fromPixels()
的函数内部调用window.addEventListener('DOMContentLoaded', ...)
。知道为什么我会收到此错误以及如何使fromPixels
函数起作用吗?<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/[email protected]/dist/tf.min.js"></script>
</head>
<body>
<img id="test" src="https://jpeg.org/images/jpeg-home.jpg">
<script>
window.addEventListener('DOMContentLoaded', ev => {
const img = document.getElementById('test')
tf.browser.fromPixels(img).print()
})
</script>
</body>
</html>
最佳答案
if (document.readyState !== 'complete') {
throw new Error(
'The DOM is not ready yet. Please call ' +
'tf.browser.fromPixels() once the DOM is ready. One way to ' +
'do that is to add an event listener for `DOMContentLoaded` ' +
'on the document object');
}
Github tensorflow/tfjs
根据上面的代码,抛出错误是因为
document.readyState
不是complete
。当初始HTML文档已完全加载和解析,而无需等待样式表,图像和子帧完成加载时,将触发DOMContentLoaded事件。
https://developer.mozilla.org/en-US/docs/Web/API/Window/DOMContentLoaded_event
文档的readyState可以是以下之一:
装货
该文档仍在加载中。
互动
该文档已完成加载,并且已对文档进行了解析,但是仍在加载诸如图像,样式表和框架之类的子资源。
完成
该文档和所有子资源均已完成加载。状态指示加载事件即将触发。
https://developer.mozilla.org/en-US/docs/Web/API/Document/readyState
DOMContentLoaded
在尚未加载任何子资源之前被调用。因此,在执行代码时,document.readyState
仍为interactive
。只需忽略错误说明,然后尝试使用
load
事件监听器即可。关于javascript - tf.browser.fromPixels()无法正常工作,因为“DOM尚未准备好”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57549521/