我的html具有其他应用程序嵌入的扩展名:

document.documentElement.appendChild((function () {
    var objectElement = document.createElement("embed");
    objectElement.setAttribute("id", "my-plugin");
    objectElement.setAttribute("type", "application/x-my-app");
    objectElement.setAttribute("width", "0");
    objectElement.setAttribute("height", "0");
    return objectElement;
}()));


通常,我们通过其ID获取该对象:var plugin = document.getElementById("my-plugin");

这里的问题是,该对象是由其他应用注入的,其ID可能会有所不同。我只知道它的MIME类型是“ x-my-app”,但是看起来没有getElementByType()可以获取它?

最佳答案

sufficiently advanced browsers上,您可以使用querySelector() / querySelectorAll()

document.querySelector("embed[type='application/x-my-app']")


如果使用jQuery,则即使在不够先进的浏览器上,以下内容也可以使用:

$("embed[type='application/x-my-app']")


如果两者都不是,则可以遍历所有<embed>标记:

result = [];
var embeds = document.getElementsByTagName('embed');
for (var i = 0; i < embeds.length; i++) {
    var embed = embeds[i];
    if (embed.type === type) {
        result.push(embed);
    }
}


全部三个的jsFiddle example

07-24 09:51