如何删除未知的脚本和iframe?

时间:2015-03-27 10:24:35

标签: javascript html

我有一个HTML页面:=

<!DOCTYPE html>
<html lang="en">
 <head>
    <meta charset="UTF-8">
    <title>Document</title>
    <script type="text/javascript" src = "http://localhost/Stats/Stats.js">
    </script>
 </head>
 <body>
    <button onclick="test()">Test</button>

 </body>
</html>

但是当我在这个页面上使用Firebug时,它们似乎是许多不需要的和未知的脚本标签和iframe。 我张贴了一张照片,但我的代表不会让我。

我该怎么办?我尝试通过磁盘(使用file:///协议)和xampp(使用http://localhost/)运行它,但没有区别。

1 个答案:

答案 0 :(得分:-2)

只需提供您想要课程的脚本和iframe。

然后,在页面加载后,查看文档以获取所有(a)脚本元素和(b)iframe元素的列表。只需遍历这些列表并删除任何不包含您已分配给允许或所需元素的类别。

这是一个简短的片段,可以在“加载”中添加一个事件监听器。窗口的事件。触发后,此功能会修改任何iframe和脚本,其类不包含“#desired”。

该代码包含2个脚本和2个iframe。运行onDocLoaded函数后,每个函数只剩下一个。

<!DOCTYPE html>
<html>
<head>
<script class='desired'>
"use strict";

function forEachNode(nodeList, func)
{
    var i, n = nodeList.length;
    for (i=0; i<n; i++)
    {
        func(nodeList[i], i, nodeList);
    }
}

window.addEventListener('load', onDocLoaded, false);

function onDocLoaded()
{
    var scriptElems = document.getElementsByTagName('script');
    alert("initially, there are " + scriptElems.length + " scripts");
    forEachNode(scriptElems, checkForSpecificClass);
    scriptElems = document.getElementsByTagName('script');
    alert("there are now " + scriptElems.length + " scripts");

    ///////////
    var iframeElems = document.getElementsByTagName('iframe');
    alert("initially, there are " + iframeElems.length + " iframes");
    forEachNode(iframeElems, checkForSpecificClass);
    iframeElems = document.getElementsByTagName('iframe');
    alert("there are now " + iframeElems.length + " iframes");


    function checkForSpecificClass(elem, index, list)
    {
        if (elem.classList.contains('desired') != true)
            elem.parentNode.removeChild(elem);
    }
}
</script>
<script src='someInjectedCrap.js'></script>
</head>
<body>
    <iframe class='desired'>
    </iframe>

    <iframe src='someInjectedCrap.html'></iframe>
</body>
</html>