Turned out that the culprit was an invisible non-collapsed block that contained a "Skip to conent" link, which was meant for browsers like Lynx, Links, Elinks, Netscape 4.x, and other older fare (Lynx is still maintained :). This is really the fault of site coders, who instead of specifying
display:none
in the element's style, only specified visibility:none
. The former would have collapsed the whole element, the latter only makes it invisible, but still usable and visually existent in the document structure.If positioning is important, then one design solution is to specify a low z-index
for the invisible DIV
element and a correspondingly higher z-index
for code that contains links (an unordered list). In CSS, z-index
specifies how elements are layered with respect to each other: a higher value means that an element is above (or in front of) all other elements and a lower value (if somewhere is a higher value specified) means that the element is below, or behind higher-valued elements.First I tried the Adblock Plus (ABP) extension, but that didn't work: ABP 0.7.0.2 is the last version for Firefox 1.0, but lacks functionality to collapse/hide elements by their id. Only the next version, 0.7.1, starts supporting this. I've written about it previously.
As I was looking for a solution, the Greasemonkey extension caught my fancy. The last to support Firefox 1.0 is 0.5.3.
Version 0.5.3 is also the last one of Greasemonkey to install on SeaMonkey 1.1, but it doesn't work.The solution is to first install xSidebar (If the current stable versions won't want to install, then version 1.0.1 or 1.0.2 might install properly). Then on the back of xSidebar a modified Greasemonkey extension can be installed. So for SeaMonkey 1.1, Greasemonkey 0.8.2 mod is the order of the day. Note that if you have Adblock Plus 1.0.2 installed, its toolbar button will vanish. But no worries: You can turn on the Adblock Plus status bar icon from Tools > Adblock Plus Preferences...Greasemonkey is a powerful tool to change the look and functionality of online sites and web pages client-side, but alas, it is not very easy and requires knowledge of HTML, JavaScript and CSS.
There are many instructions online on how to incorporate custom JavaScript and CSS snippets into your browser equippped with Greasemonkey and how to specify server whitelists and blacklists. I might introduce the same instructions here or put them up somewhere else.
While I thought I just had the solution, it then turned out that the block element was only equipped with a
class
parameter and no ID
. I had also learned that only recent and modern versions of Greasemonkey now support the JavaScript getElementbyClass
functionality, but I only have an outdated version.Well, no matter: Greasemonkey 0.5.3 supports
getElementbyId
, but that really is not the most important thing, because Greasemonkey also allows injecting snippets of Cascading Style Sheets with JavaScript. And CSS is power.Yes, while the
DIV
element did not have the ID
parameter in it, it still had the CLASS
parameter specified and the solution looks like this:So much for now.document.styleSheets[0].insertRule('A[class~=yucs-skipto-search] {display:none}', 0);
/* ^ •A
is the linked element;
• Square brackets in the selector are used for conditional matching in the form ofELEMENT[attribute=value]
— In this case, the{display:none}
CSS block applies whenyucs-skipto-search
is found anywhere in anA
tag'sclass
attribute value (which the next point is about);
•~=
means that the pattern for the element attribute may be any matching part insideclass
, because when I looked at the source, theclass
parameter contained more than justyucs-skipto-search
.
•display:none
collapses the element. */document.styleSheets[0].insertRule('A[target=_top]:hover {text-decoration:underline !important;}', 0);
/* ^ In this line, Any hovered link tagA
where the target parameter exactly contains_top
must be underlined when hovered over. Note that instead of~=
for any matching part insideA[TARGET ]
there is a single equals sign=
for an exact match.!important
overrides anything provided previously and makes sure that the these links are underlined when hovered over. */
No comments:
Post a Comment