幾個問題之前添加var
:
Juan Mendes' answer是正確的刪除命令。如果不反向刪除,JS不但效率低下,而且由於數組值不再有效,腳本崩潰的真正機會。如果效率低下的方式似乎只運行一次或兩次,那只是運氣。
此外,需要考慮嵌套節點,請注意下面代碼中的額外檢查。
代碼在Opera, User JavaScript之外似乎對您有用的事實表明您正在使用的節點已通過javascript/AJAX頁面添加。用計時器或類似方法補償。
如果仍然遇到困難,鏈接到目標頁面和後您正試圖確切的CSS選擇器。
請注意,querySelectorAll()
is compatible with Opera Mobile 11.5,這兩個頁面要麼這樣說,要麼顯示一個問號 - 這並不意味着它不兼容,只是Mozilla沒有測試它(其他人有)。請注意,有潛在document.querySelectorAll()
和{element}.querySelectorAll()
之間的差異,因此這兩頁。
全部放在一起,這樣的代碼應該工作:
function deleteByCSS (cssSelector, delayLoopMax, delayMilliSecs) {
//-- Use defaults, if not specified.
var delayLoopMax = delayLoopMax || 0;
var delayMilliSecs = delayMilliSecs || 300;
//console.log ("Args: ", cssSelector, delayLoopMax, delayMilliSecs);
var doomedElements = document.body.querySelectorAll (cssSelector);
if (doomedElements && doomedElements.length) {
//console.log ("Found!");
//-- Found the node(s); delete it/them.
for (var J = doomedElements.length - 1; J >= 0; --J) {
var doomedNode = doomedElements[J];
if (doomedNode) {
doomedNode.parentNode.removeChild (doomedNode);
}
}
}
else {
//-- Nodes not found. Wait for JS to add them, if specified.
if (delayLoopMax > 0) {
delayLoopMax--;
setTimeout (
deleteByCSS,
delayMilliSecs,
cssSelector, delayLoopMax, delayMilliSecs
);
}
}
}
在這種情況下,有20的初始額外的參數使用它...
deleteByCSS ("*VALID* CSS selector", 20);
這真的是一個很好的答案,但是這個函數doesn也不行。我嘗試用一個匿名函數來包裝它,然後用window.opera.addEventListener再次用指定的AfterScript事件包裝它,但仍然不銷燬元素。其中一個網站是http://endlessvideo.com/,CSS選擇器是'div [style =「float:left;」] div [style =「margin-left:5px;」] div [style =「float:右鍵;「],div#addthis_button,div#uvTab,a [href * =」vdownloader.com「],[href * =」youtubedownloader.com「]',可在桌面上完美工作Firefox – user1263513 2012-03-13 07:17:38
您最後的代碼評論是「搞砸了」。請編輯該問題以添加任何重要的代碼。不要在這裏使用'addEventListener'或'AfterScript',這就是計時器代碼的用途。事實上,這個特定的代碼可以在[Greasemonkey模式](http://www.opera.com/docs/userjs/examples/#greasemonkey)中正常運行。 ...最後,我不知道Opera Mobile是否支持多個選擇器。首先嚐試一下簡單的東西,比如'deleteByCSS(「#addthis_button」,20);'。我沒有看到任何iFrames,但是如果這些節點中的一些在一箇中,請注意。 – 2012-03-13 07:35:27
我已經嘗試了在UserJS和Greasemonkey模式下的答案中提供的每個函數組合。我非常懷疑Opera Mobile真的支持querySelectorAll()。作爲一種替代方法,您如何看待這個問題:http://v.gd/ovd9UR正如您在演示中看到的那樣,它確實正在討論這個功能 – user1263513 2012-03-13 07:58:19