6 html javascript dom userscripts
我想写一个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].
T.J*_*der 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
如果元素在a中iframe,则必须调用getElementById其中的文档iframe,因为iframes是单独的窗口并且具有单独的文档.如果你知道id的iframe,你可以用document.getElementById得到的iframe实例,然后用contentDocument访问其文件,然后使用getElementById上是得到了"minigamesContainer"元素:
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) {
    }
}
(那try/catch是因为访问iframe的内容可能存在安全性错误;我不知道Greasemonkey是否足以知道SOP是否适用于它.我倾向于认为它没有,但更安全......)
如果你不知道id的iframe,或者如果它没有一个,你可以通过所有这些循环是通过让与document.getElementsByTagName,然后循环:
var iframes, index, iframe, div;
iframes = document.getElementsByTagName("iframe");
for (index = 0; index < iframes.length; ++index) {
    iframe = iframes[index];
    try {
        div = iframe.contentDocument.getElementById("minigamesContainer");
        if (div) {
            div.style.display = "none";
            break;
        }
    }
    catch (e) {
    }
}
参考文献: