Javascript 当don';我不知道它的id?

Javascript 当don';我不知道它的id?,javascript,html,Javascript,Html,My html有一个由其他应用程序嵌入的扩展: document.documentElement.appendChild((function () { var objectElement = document.createElement("embed"); objectElement.setAttribute("id", "my-plugin"); objectElement.setAttribute("type", "application/x-my-app");

My 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(“我的插件”)


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

你可以使用
getElementsByTagName()
循环搜索结果,直到找到一个媒体类型正确的。你必须根据标签类型
嵌入
和你知道的事情来找到它。例如,如果您的HTML如下所示,其中嵌入ID未知:

<div id="homepage">
<div class="decorativeFrame">
<embed id="sk930123">
...
</embed>
</div>
</div>
如果您正在查找的范围内有多个嵌入,那么您可能必须循环查找所有找到的嵌入,并检查嵌入标记的某些属性,以确定您正在查找的嵌入

如果您向我们展示相邻的HTML是什么样的,我们可以找到精确的优化方法。

在上,您可以使用
querySelector()
/
querySelectorAll()

如果使用jQuery,即使在不够高级的浏览器上也可以使用以下功能:

$("embed[type='application/x-my-app']")
如果两者都不存在,则可以循环所有
标记:

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);
    }
}
result=[];
var embeds=document.getElementsByTagName('embed');
对于(var i=0;i

这三种方法中的一种。

。。。或者甚至在目标环境支持的情况下尝试使用querySelector(“embed[type=“application/x-my-app”)。我不认为你应该在数组上使用结构
(var I in Embeddes)
。@jfriend00:对,我忘了monkey补丁库。(Rubyland有很多问题要回答。)感谢@Inerdial,
document.querySelector(“embed[type='application/x-my-app'])
适用于我的情况。它是一个简单的背景html文件,在嵌入对象周围不包含任何相邻元素。我还没有尝试过它,但我认为如果浏览器不支持
querySelector()
嵌入对象周围不能有任何内容。它必须位于其他对象中。
$("embed[type='application/x-my-app']")
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);
    }
}