【问题标题】:Removing <body> with a userscript使用用户脚本删除 <body>
【发布时间】:2017-02-24 00:54:57
【问题描述】:

对不起,我不太擅长编程。我正在尝试通过用户脚本修复我学校网站上的这个恼人的错误。我已经在几页上测试了 RegEx,至少可以。我需要让用户脚本删除我不想看到的部分。这是来自网站来源的sn-p,我已经用'//'标记了需要删除的内容。

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
//<html><head>
//<title>404 Not Found</title>
//</head><body>
//<h1>Not Found</h1>
//<p>The requested URL /get.php was not found on this server.</p>
//</body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-gb" lang="en-gb" >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="index, follow" />

这是我的用户脚本,它不起作用。我知道这反映了我作为程序员的技能,请不要讨厌。

var REGEX = /<HTML>(.*?)([^\n]*?\n+?)+?<\/BODY><\/HTML>/ig;
document.body.innerHTML=document.body.innerHTML.replace(REGEX, '');

【问题讨论】:

  • 为什么要删除它?它是如何生成的?
  • 如果您能更详细地解释什么“不起作用”会有所帮助,但我将假设您在脚本运行后得到一个空白页面 - g 标志的正则表达式将导致它删除 所有 HTML。
  • @Rawing g 标志不会导致这种情况。第二个&lt;html&gt; 标签的属性与&lt;HTML&gt; 不匹配。这不是问题。
  • 旭狐,你懂的!

标签: html regex innerhtml document-body


【解决方案1】:

这个标记显然是无效的,但浏览器(至少 Chrome 和 Firefox)会将这两个 &lt;html&gt; 部分与其最佳猜测合并在一起。所以与document.body 互动可能不是你想要的。

这样做可以从视觉上解决问题:

document.querySelector('h1').remove() // remove first h1 "Not Found"
document.querySelector('p').remove() // remove first p "The requested..."

【讨论】:

  • 我马上试试,谢谢。我唯一担心的是这个问题实际上在文档的后面重复出现,所以我有两个实例。但这仍然是一个巨大的帮助。
  • 成功了!它删除了两个实例,因为它们之间没有任何实际的 内容,所以我只运行了两次。
猜你喜欢
  • 2015-09-02
  • 1970-01-01
  • 2015-07-16
  • 2020-09-01
  • 2019-07-21
  • 2020-03-05
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
相关资源
最近更新 更多