是否可以在浏览器之前拦截/处理/解析body标签内的HTML?

时间:2012-03-29 03:38:36

标签: javascript jquery

我想知道是否可以采取标签内部的任何内容,通过Javascript运行并操作它,然后将其丢回浏览器然后进行解析。

我确信它可以做到,但它可能不像我建议的那样简单。

例如,有没有办法让Javascript获取HTML文件的完整源代码并将其作为文本放入var中?

3 个答案:

答案 0 :(得分:4)

我不知道是否可以使用直接JS,但实现相同效果的一种棘手方法是将您的身体设置为display:none,然后让您的JS解析并将其吐出来,然后设置身体回到display:block

答案 1 :(得分:0)

您可以实际开始考虑操作尚未完成加载的页面的最早时刻是加载页面DOM时。在此之前进行的任何尝试都很可能导致失败。这就是大多数JavaScript框架/库都有特殊方法的原因,这些方法允许用户在加载DOM后调用他们的代码。

编辑:如果您只想在加载页面之前删除某些元素,最好的办法就是在加载DOM后立即从页面DOM中删除它们,这样会阻止浏览器从甚至有机会加载不需要的资源。我将给你一个使用jQuery的例子,但仅仅是因为它有一个很好的方法叫做 ready(),它在加载DOM后立即被触发。也就是说,使用普通的JavaScript可以完全实现这一点,虽然有点复杂。

$('document').ready(function(){
    $('.unwanted-elements').remove(); // You can use any other selector you want.
});

此代码将删除DOM树中不需要的元素,然后才能加载可能位于其中的资源。

答案 2 :(得分:-1)

将所有BODY HTML转储到服务器端的JS变量中并执行以下操作

 <html>
      <head>
           <script type="text/javascript">
                var bodyHTMLStr = "<?=dumpPageBody?>";
                //Create a element dynamically and dump 'bodyHTMLStr' as innerHTML to it
                var dummyDIV = document.createElement("DIV");
                dummyDIV.innerHTML = bodyHTMLStr;

                //Now you can all the processing you want. Once done dump dummyDIV html into BODY's innerHTML
           </script>
      </head>
      <body>
      </body>
 </html>