尝试在 iframe 中编辑 dom 元素时出现“(variablename) is null”
I get "(variablename) is null" when trying to edit dom elements inside an iframe
我不知道 jQuery,我正在尝试仅使用 ECMAScript (ES6),我在 W3Schools 上找到了一种在 [=] 中编辑 DOM 元素的方法12=]
我的代码完全一样:
let iframe = document.getElementById("music");
let elmnt = iframe.contentWindow.document.getElementById("player");
elmnt.play();
我有一个带有 id="music" 的 iframe 标签和一个带有 id="player" 的音频标签。代码应该在页面加载时播放音频源,它可以工作,但我仍然在控制台中收到错误消息,我无法使用 ES6 与音量交互。
但我得到:"TypeError: elmnt is null (sketch: line 29)"
举个例子:https://codepen.io/mark_karrica_/pen/zgxyVL
(我正在使用 p5.js 库,但我认为问题与此无关)
您的代码 运行ning 在 iframe 完成加载之前。您可以通过在框架加载后将代码设置为 运行 来防止这种情况。 iframe
元素有一个 load
事件,您可以将事件处理程序附加到该事件。
<iframe id="myframe" src="..." onload="iframeLoaded()"></iframe>
在这里,我已将事件处理程序 iframeLoaded
附加到框架的 load
事件。然后,您将代码粘贴到该方法中:
function iframeLoaded() {
let iframe = document.getElementById("music");
let elmnt = iframe.contentWindow.document.getElementById("player");
elmnt.play();
}
我不知道 jQuery,我正在尝试仅使用 ECMAScript (ES6),我在 W3Schools 上找到了一种在 [=] 中编辑 DOM 元素的方法12=]
我的代码完全一样:
let iframe = document.getElementById("music");
let elmnt = iframe.contentWindow.document.getElementById("player");
elmnt.play();
我有一个带有 id="music" 的 iframe 标签和一个带有 id="player" 的音频标签。代码应该在页面加载时播放音频源,它可以工作,但我仍然在控制台中收到错误消息,我无法使用 ES6 与音量交互。
但我得到:"TypeError: elmnt is null (sketch: line 29)"
举个例子:https://codepen.io/mark_karrica_/pen/zgxyVL
(我正在使用 p5.js 库,但我认为问题与此无关)
您的代码 运行ning 在 iframe 完成加载之前。您可以通过在框架加载后将代码设置为 运行 来防止这种情况。 iframe
元素有一个 load
事件,您可以将事件处理程序附加到该事件。
<iframe id="myframe" src="..." onload="iframeLoaded()"></iframe>
在这里,我已将事件处理程序 iframeLoaded
附加到框架的 load
事件。然后,您将代码粘贴到该方法中:
function iframeLoaded() {
let iframe = document.getElementById("music");
let elmnt = iframe.contentWindow.document.getElementById("player");
elmnt.play();
}