我正在尝试从twitch子页面“ Game List”(twitch.tv/目录)中删除各种游戏,但是却无济于事。

我已经使用警报,计时器和@run-at document-end进行了调试,但都无济于事,脚本可以正确到达页面,但是一旦我尝试操作内容,就不会发生任何事情。

这是我用来测试的内容:

// ==UserScript==
// @name        TwitchDeleteTest
// @namespace   to.be.continued
// @include     http*://*twitch.tv/directory*
// @version     1
// @grant       none
// ==/UserScript==

var rmLoL = document.querySelector("a[title='League of Legends']");
var grandParent = rmLoL.parentNode.parentNode;
grandParent.parentNode.removeChild(grandParent);


脚本为什么不删除那些节点?

最佳答案

该站点使用javascript(AJAX)加载您正在寻找的链接。这意味着该链接将在用户脚本完成运行很长时间后显示-即使您使用@run-at document-end

要解决此问题,请使用AJAX-aware techniques,例如使用waitForKeyElements()

这是一个完整的脚本,显示了如何使用jQuery + waitForKeyElements方法执行此操作:

// ==UserScript==
// @name     Twitch Delete Test
// @match    *://*.twitch.tv/directory*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
waitForKeyElements (
    ".game.item a[title='League of Legends']", deleteContainingNode
);

function deleteContainingNode (jNode) {
    jNode.parent ().parent ().remove ();
}


在此页上测试:http://www.twitch.tv/directory

有关更多信息和更多链接,请参见链接的答案。

关于javascript - Greasemonkey无法找到/修改/删除内容? (在Twitch.tv上),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34355987/

10-10 00:19