2010-07-06 92 views
3

我正在寻找这样一种方法,它允许我在DOM甚至呈现之前添加,删除页面的DOM对象,我的意思是第一个JS,包含在我的页面的头标可以出来,寻找一个特定的标签说,甚至在呈现之前从HTML中删除它,我知道JavaScript调用被阻止,所以浏览器将呈现我的网页,并会到我的JavaScript头,它会阻止渲染和下载,并执行JavaScript,现在在执行的时刻,我需要控制以前下载的HTML等待呈现。 有没有这种方法?在document.ready()之前获取HTML标签,DOM呈现之前

我已经尝试使用文档属性,但我没有在我的js中得到这个js后在html中的标签。

+0

这可能是一个愚蠢的问题,但是......你能解释你为什么要删除这个脚本吗?通常最好的答案是“只要不把脚本放在原始页面中”!如果你能解释为什么不能这样做,以及为什么脚本需要被删除,那可能会提示一种解决问题的方法... – psmears 2010-07-07 07:50:11

+0

想要实现一个客户端库js来加载所有这些脚本在非阻止行为, – 2010-07-07 21:09:39

回答

-1

一个简短的回答这个问题是NO,这不能是完成

+1

你的回答听起来过于自信,因为它是你发布的问题。 – developer10 2014-04-14 07:54:14

0

</body>之前插入JavaScript。

+0

谢谢mcandre,但这是我想要在呈现之前删除这些标记的问题,为此我需要删除js以在任何事情之前运行。 – 2010-07-06 16:36:15

0

您必须小心,因为在完成DOM之前尝试修改DOM导致IE出现问题。特别是在IE6中,这会导致一个非常不友好的错误信息,它在接受之后导致标准“本页不能显示”页面。虽然在IE8中没有完全重述,但这个问题只是被吞噬了。

如果可能的话,我会建议在HTML到达渲染器之前,通过代理或浏览器扩展将所需的标签从HTML中剥离出来。如果这些不是真正可行的,那么我不确定你能做什么。

+0

这意味着没有这样的方式来使用Javascript吗?没有交叉浏览器解决方案? :( – 2010-07-06 16:43:45

+0

不是,如果DOM没有被构造,你不能访问和修改DOM DOMContentLoaded可能是你想要观看的事件,但我不确定它目前支持哪些浏览器。 – 2010-07-06 16:57:35

+0

我试过了,没有运气它也没有在渲染之前启动 – 2010-07-06 17:00:47

0

也许另一种攻击问题的方法是从另一个方向。从隐藏所有内容开始,然后仅在加载页面时显示所需的元素。不确定您的问题域是否允许这样做,但它可能适用于您。

+0

是的,这将是一个解决方案,但我想要删除的是另一个JavaScript,我不想它下载,这似乎是可能的,如果我可以只是在呈现该标记之前移除该dom标记,这样浏览器将阻止呈现,读取我的移除js并在下载之前移除该脚本标记。但机会现在很低 – 2010-07-06 16:55:13

+0

你也不想使用这种方法。如果您尝试进行渐进式增强,并且使用CSS隐藏所有内容,那么您的页面在使用ecmascript的浏览器上看起来不错,但不会显示那些不会显示的页面(它仍然会隐藏)。 – John 2010-07-07 03:39:23

0

那么,你想阻止页面中的脚本执行?如果你可以把你自己的脚本,其中,无论你愿意,你可以尝试

<script> 
document.write("<!--"); 
</script> 
<script>// offending script</script> 
<script> 
document.write("-->"); 
</script> 

(警告:这样就在于疯狂)

+0

以及我想要的是完全停止获取下载的脚本 – 2010-07-06 20:22:32

+0

omg这是既聪明,有趣,可怕。 :-)但它也不会阻止脚本被下载? – vidstige 2015-10-16 08:58:04

0

只需将脚本标记推入noscript标记中,然后在需要时将其标记出来,然后无论是否启用javascript,该脚本都将不会执行,直到将其从noscript标记中拉出。 注意:您应该将javascript包含在注释标记中,以防止不支持noscript标记的浏览器无法执行它。

+1

不支持