Javascript 当don';我不知道它的id?
My html有一个由其他应用程序嵌入的扩展: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");
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);
}
}