使用JavaScript编辑<head>部分

7

当页面加载时,我希望清除整个 head 部分……实际上,我的目标是删除所有保存在 head 部分中的 JavaScript 代码。

有没有什么办法可以做到这样:

document.head.innerHTML = "";

说明: 我正在使用一个使用Qt和webkit的Python脚本来截取网站的屏幕截图。
它在大多数网站上都可以工作,但有一个网站无法正常工作。该网站有一堆定时运行的JavaScript代码。 WebKit网页对象允许我在页面上执行JavaScript。如果有某种方法可以让JavaScript从头部删除所有代码,我想尝试一下以进行测试,看看是否可以解决我的屏幕截图脚本问题。


你实际尝试过 document.head.innerHTML = ""; 吗?会发生什么? - Felix Kling
一种方法是使用removeChild方法删除头部,然后再添加一个空的头部。 - Sarfraz
1
当我尝试使用document.head.innerHTML = "";时,它没有起到任何作用。 - benino
5个回答

3
document.getElementsByTagName("head")[0].innerHTML = "";

// IE
var htmlEl = document.getElementsByTagName("html")[0];
htmlEl.removeChild(document.getElementsByTagName("head")[0])
var el = document.createElement("head");
htmlEl.appendChild(el);

要停止通过setTimeout运行的JavaScript脚本,您应该使用clearTimeout,但是对于这种情况,您应该有一个处理程序...但是如果它们被定义为全局变量,那么您很幸运。


3

您可以从头部删除元素,但这并不重要。脚本已经运行,删除元素不会卸载它们或做任何事情。


2
所以,如果一个JavaScript函数驻留在头部,并被删除,然后通过超时再次调用,它仍然会运行吗? - benino

0

1
哇,有趣。我得看看能不能用这个!谢谢。 - benino
2
值得注意的是,现在已经存在document.head。 - Stephen Jenkins

0

$('#id').empty(); 工作得非常好。


0
正如 Noah 所说,仅仅从 head 标签中删除代码是没有任何作用的。你必须实际上撤销代码正在做的事情。例如,如果它正在使用 setTimeout() 来设置你所抱怨的超时代码,那么你需要使用 clearTimeout() 来禁用它。

2
通过 setTimeout = function () {}; 来劫持 setTimeout - Ates Goral

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接