如何检查我的html中是否存在embed标签。 我已通过javascript
创建了此标记 soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "notify.wav");
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("autostart", true);
soundEmbed.setAttribute("loop", false);
document.body.appendChild(soundEmbed);
但由于我使用autorefresh和appendChild,每次刷新它都会产生额外的声音。
使用appendChild,我想我有很多嵌入式标签。这就是我认为可能是附加声音的原因。
答案 0 :(得分:3)
在追加之前添加soundEmbed.id = "__soundEmbed";
。然后,用以下内容包围整个事物:
if( !document.getElementById("__soundEmbed")) {
soundEmbed = ......;
......
}
答案 1 :(得分:1)
你可以给元素一个id并首先检查它:
if (!document.getElementById('someId')) {
var soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "notify.wav");
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("autostart", true);
soundEmbed.setAttribute("loop", false);
soundEmbed.setAttribute("id", 'someId');
document.body.appendChild(soundEmbed);
}
或者,检查一个标志(因为soundEmbed似乎在别处定义,我们可以使用falsey检查):
if (!soundEmbed) {
soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "notify.wav");
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("autostart", true);
soundEmbed.setAttribute("loop", false);
document.body.appendChild(soundEmbed);
}
答案 2 :(得分:0)
它不在您的HTML中,但它将在DOM树中(您在解析HTML后将其添加到DOM中,因此它永远不会看到任何HTML)。一个超级简单的解决方案是只维护一个全局变量,告诉您它是否已经创建 - 只需将其初始化为false
,并在创建true
时将其设置为embed
} element。