2017-02-24 28 views
0

對不起,但我不是很好的編程。我正試圖通過用戶腳本修復我學校網站上的這個令人煩惱的錯誤。我已經在幾個頁面上測試了RegEx,至少這是有效的。我需要讓userscript刪除我不想看到的部分。這是來自網站源代碼的片段,我標記了需要使用'//'刪除的內容。刪除<body>與用戶腳本

<!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" /> 

這是我的userscript不起作用。我知道這反映了我作爲程序員的技能,請不要討厭。

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

爲什麼要刪除嗎?它是如何產生的? –

+0

如果你可以更詳細地解釋什麼「不起作用」,這將有所幫助,但我會假設你在腳本運行後得到一個空白頁面 - 你的正則表達式的'g'標誌將導致它刪除__all__ HTML。 –

+0

@Rawing'g'國旗不會造成這種情況。第二個''標籤的屬性與「」不匹配。這不是問題。 – Xufox

回答

1

這個標記顯然是無效的,但瀏覽器(至少Chrome和Firefox)將在這兩個<html>部分連同其最好的猜測合併。所以與document.body交互可能不是你想要的。

做這樣的事情在視覺上就會解決這個問題:

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

我會馬上嘗試,謝謝。我唯一擔心的是問題實際上是在文檔後面重複的,所以我有兩個實例。但這仍然是一個巨大的幫助。 – marnason

+0

它的工作!它刪除了兩個實例,因爲它們之間沒有任何實際的-內容,所以我只運行了兩次。 – marnason