我想写一个greasemonkey脚本来禁用某个页面上的div。
在页面的任何给定负载上,我不知道div在div中的位置,但我知道它总是被称为<div id = "alertPanel"> ....</div>
我如何禁用此div?
我的初步想法是:
var myDivs= document.getElementsByTagName('div');
for (i=0; i<myDivs.length; i++)
{
if (myDivs[i].<get id property somehow> = "alertPanel")
myDivs[i].style.visibility = 'hidden';
}
但是你可以告诉我,我一直在访问id属性以进行相等检查。
我很自然地使用文本编辑器来编写这个 - 我猜一个标准的javascript编辑器会在输入myDivs[i].
之后给出一个自动完成列表
答案 0 :(得分:13)
如果它有id
,您可以使用document.getElementById
:
var div = document.getElementById("alertPanel");
然后如果它存在,你可以删除它(可能是一个坏主意)或隐藏它:
if (div) {
div.style.display = "none"; // Hides it
// Or
// div.parentNode.removeChild(div); // Removes it entirely
}
更新:重新评论另一个答案:
谢谢你的回答。您的statemt是否也适用于包含iframe的网页。有问题的div在iframe中。我尝试过ypur解决方案但不幸的是它没有用。也许链接到页面将有所帮助:tennis.betfair.com我要禁用的div是id为:minigamesContainer
如果元素位于iframe
,那么您必须在getElementById
上的文档上调用iframe
,因为iframe
是单独的窗口并且是单独的文档。如果您知道id
的{{1}},则可以使用iframe
获取document.getElementById
实例,然后使用iframe
访问其文档,然后在那个上使用contentDocument
来获取“minigamesContainer”元素:
getElementById
(var iframe, div;
iframe = document.getElementById("the_iframe_id");
if (iframe) {
try {
div = iframe.contentDocument.getElementById("minigamesContainer");
if (div) {
div.style.display = "none";
}
}
catch (e) {
}
}
是因为访问iframe内容时可能存在安全性错误;我不太了解Greasemonkey以了解SOP是否适用于它。我倾向于认为它没有,但更安全......)
如果你不知道try/catch
的{{1}}或者它没有id
,你可以通过document.getElementsByTagName
获取它们来循环遍历所有这些,然后循环:
iframe
参考文献:
答案 1 :(得分:1)
在有效的HTML中,您只能拥有具有特定ID的元素。所以:
document.getElementById('alertPanel').style.visiblity = 'hidden';
但如果您仍然需要迭代所有div并检查他们的ID,那么这应该有效:
if (myDivs[i].id == "alertPanel") myDivs[i].style.visibility = 'hidden';