修改内联样式,多元素深入

时间:2013-03-17 10:53:43

标签: jquery css greasemonkey inline-styles

我正在尝试修改网站上CometChat的颜色,由于拥有未经修改的CometChat,该网站将保持匿名状态。我只想更改着色,但更喜欢在用户样式扩展上使用Greasemonkey,因为不想为单个页面安装单个扩展名。

我已经改变了背景颜色,因此它是黑色的,在我将默认文本颜色(黑色)修改为白色之前这很好。
系统似乎根据Cookie中的颜色设置文本样式,但它在跨度上使用内联样式。

我无法弄清楚如何只修改内联样式,它是“颜色:#000000”(不,它们没有附加“;”)而不更改所有其他颜色,并从中删除一个功能聊天。

我试过了:

  • 使用jQuery的.attr查找值,然后应用具有!important颜色的类。
  • 使用.attr直接更改颜色。

我还尝试了span[style="color:#000000"]和其他一些方法,到目前为止还没有任何工作。

我注意到的一件事是,在尝试alert()时,看看它是否正常工作(在.each期间的某些尝试中),它不会创建警报。我能想到的唯一原因是它是几个Div深入到文档中。 (html > body > div#container > div#currentroom > div#currentroom_left > div#currentroom_convo > div#currentroom_convotext > div > div.cometchat_chatboxmessage > span.cometchat_chatboxmessagecontent > span(我想编辑的那个))

1 个答案:

答案 0 :(得分:1)

我猜测那些/那些跨度是由AJAX添加的(无法从问题中得知)。无论他们是否,您都可以使用waitForKeyElements()来更改/他们:

// ==UserScript==
// @name     YOUR_SCRIPT_NAME
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/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 (
    "#currentroom_convotext div.cometchat_chatboxmessage > span.cometchat_chatboxmessagecontent > span", 
    changeChatMessageCSS
);

function changeChatMessageCSS (jNode) {
    jNode.css ("color", "white");
}



指示页面是重置内联样式还是在其CSS中使用!important。 (它可能也没有。)