Closed Bug 161109 Opened 22 years ago Closed 2 years ago

non-animated mode pref (disabling marquee, t-d:blink, anim gifs, mngs)

Categories

(Core :: CSS Parsing and Computation, defect, P3)

defect

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: bugzilla_kl, Unassigned)

References

Details

(Keywords: access, helpwanted, testcase, Whiteboard: [wgate])

Attachments

(1 file, 4 obsolete files)

the (proprietary) HTML-Tags <blink> and <marquee> can be very boring for users -
we should add an option (in the GUI) to disable the effects themself (the
-moz-binding on <marquee> and the text-decoration:blink; on <blink>)
gar.. ! "Prefeerenced" should be renamed to "Preferences Window"...
Assignee: ben → attinasi
Status: UNCONFIRMED → NEW
Component: Preferences → Layout
Ever confirmed: true
QA Contact: sairuh → petersen
Yes, I shouldn't have to use the Zap cheap effects bookmarklet every time I run
in to a page containing that garbage...
UI pref for blink -> bug 106462
i want to cut off those little bastard <blink>'s and <marquee>'s heads ;)
Summary: add an option to disable DHTML-Tags → add pref for disabling annoying non-standard HTML elements ("DHTML Tags")
Priority: -- → P3
This can go two routes-it can become a meta bug for bug 106462 and there can be
a new bug for a marquee pref (bug 161049 is for REMOVING marquee) or this can
become the bug to remove marquee.
Keywords: helpwanted
stylesheet for the "don't go on users nerves" bug for marquee:

marquee{
	-moz-binding:none;
	overflow:auto;
	display:block;
}

the display:block; is another bug waiting for checkin - and so required to test
on the current code.
doron, how do you get the height for vertical marquee? I guess we still need
that for this mode.
Attached patch implementation of marquee pref (obsolete) — Splinter Review
This patch implements a pref, "browser.display.enable_marquee", and sets the
default to false.
Comment on attachment 95581 [details] [diff] [review]
implementation of marquee pref

Note that this patch does not have UI for the pref.  Rather, it's a hidden pref
that distributors could set.
David: I guess, that this should find friends everywhere...
Comment on attachment 95581 [details] [diff] [review]
implementation of marquee pref

I should remove the |aMedium| checks -- those were from when I was writing the
patch to work the other way around.
This should have "sec508" keyword because it blocks Section 508 requirement:

   (h) When animation is displayed, the information shall be displayable in at
   least one non-animated presentation mode at the option of the user.

I would add it myself, but I can't because someone decided to play games with my
privs.
Adding access and sec508 keywords.
Keywords: access, sec508
Taking bug.  I'll try to get this in for 1.1a...
Assignee: attinasi → dbaron
Component: Layout → Style System
Priority: P3 → P2
QA Contact: petersen → ian
Whiteboard: [patch]
Target Milestone: --- → mozilla1.2alpha
Attached patch revised patch (obsolete) — Splinter Review
Attachment #95581 - Attachment is obsolete: true
Why not do the pref checking in the xbl?
dbaron's patch(attachment 96164 [details] [diff] [review]) can't be applied for 1.1
on my Linux. Compiler can't find nsIPref.h.
What is the likelihood of this being put in the 1.0.x branch? Since the
<marquee> tag has slithered into there, the ability to switch the vile
thing off should be put in as well.
As I have mentioned in other bugs, if there is a UI pref for this, it should be
the same UI pref which disabled blink and animated GIFs and other things that
make for a "non-animated presentation mode". Please, don't add a gazillion prefs
for each of the various ways of animating text.
I have hacked xbl-marquee.xml to provide scrollbar instead of automatic
scrolling. This is only a "hack", but you can use it just now to disable
annoying behavior of <marquee>.

It would be nice to add user pref for this, e.g.
user_pref("browser.marquee.behavior", "autoscroll" | "block" | "scrollbars" );

Please, test it. For details see
http://bugzilla.mozilla.org/show_bug.cgi?id=163048#c5
> dbaron's patch(attachment 96164 [details] [diff] [review]) can't be applied for 1.1
> on my Linux. Compiler can't find nsIPref.h.

That's because the patch for bug 71257 changed the REQUIRES line in the
relevant Makefile.in.
nsIPref.idl says:

 47 /*
 48  * This entire interface is deprecated and should not be used.
 49  * See nsIPrefService and nsIPrefBranch for the new implementations.
 50  */

I strongly second that sentiment... Please switch to nsIPrefService.  Though
that _does_ force you to implement nsIObserver instead of just using a static
callback...

+    if (aRuleData->mDisplayData->mDisplay.GetUnit() == eCSSUnit_Null)
+      aRuleData->mDisplayData->mBinding = nsCSSValue(eCSSUnit_None);

Shouldn't you be checking mBinding's unit?

+  tag = getter_AddRefs(NS_NewAtom("MarqueeDisableRule"));

I always get confused when I see this usage of getter_AddRefs... maybe use
dont_AddRef?  Either way, though.

+PR_STATIC_CALLBACK(int)

PRInt32?

You don't seem to release mMarqueeDisableRule anywhere...  is there really a
reason not to have that be an nsCOMPtr<nsIStyleRule> ?

Changing the pref won't dynamically restyle the documents that are already
loaded, right?  Is that what we want?

Comment 19 does not apply to this bug so far, since this is all back end, no UI.
 I agree that there should only be one front-end checkbox, but separate back-end
prefs (the checkbox will toggle multiple prefs at once).  That gives embeddors
the flexibility to ship whatever UI and default settings they want.
Can I read user prefs within XBL method? If yes, we could choose desirable
behavior of <marquee> directly in xbl-marquee.xml.
Blocks: 106462, 163048
you should beable to check prefs from xbl
Doron, unfortunately attempt to access prefs in XBL causes exception
"enablePrivilege not granted".

See bug 163048 comment 8 for more details. I'll be indebted to you for any
suggestions.
Blocks: advocacybugs
Attached file Testcase
Jacek, I has tested your testcase on my XBL which provide scrollbar for
<marquee> instead of autoscroll (see bug 163048).

Because of this emerges a question: my XBL generates a horizontal scrollbar
although width of marquee area is <= than width if container; so scrollbar is
unusable. On the other hand, nevertheless, this scrollbar signifies that
<marquee> tag is present at HTML code, this might be helpful for some users.

I would ask participants of discussion, which alternative should be better in
this case.
Just give me a UI and a pref to turn off BLINK and MARQUEE.  Both.
Target Milestone: mozilla1.2alpha → mozilla1.2beta
Keywords: testcase
Comment on attachment 102724 [details] [diff] [review]
revised patch for backend of marquee pref

> +  nsCOMPtr<nsIAtom> tag;
> +  tag = getter_AddRefs(NS_NewAtom("MarqueeDisableRule"));

do_GetAtom, perhaps?

> +MarqueePrefObserver::MarqueePrefObserver() { NS_INIT_ISUPPORTS(); }

Add an assertion that gHaveMarqueePref is null?

r/sr=bzbarsky with that.
Attachment #102724 - Flags: superreview+
Revised per bzbarsky's comments.  I made the atom change in a number of other
places where the same pattern occurs.
Attachment #102724 - Attachment is obsolete: true
Comment on attachment 102728 [details] [diff] [review]
patch for backend of marquee pref

Transferring sr.
Attachment #102728 - Flags: superreview+
Comment on attachment 102728 [details] [diff] [review]
patch for backend of marquee pref

>Index: modules/libpref/src/init/all.js
>===================================================================
>+pref("browser.display.enable_marquee",      false);

Cool :)  After all the debate though in the original "support marquee" bug,
please make sure that distributors know about this.  A release note may be a
good idea.


>Index: content/html/style/src/nsHTMLStyleSheet.cpp
>===================================================================
> nsresult
> HTMLStyleSheetImpl::Init()
> {
>+  if (!gHaveMarqueePref) {
>+    gHaveMarqueePref = PR_TRUE;

Don't you want to wait on setting gHaveMarqueePref until after we know we can
get the pref?

>+    nsresult rv;
>+    nsCOMPtr<nsIPrefService> prefService = do_GetService(kPrefServiceCID, &rv);
>+    if (NS_SUCCEEDED(rv)) {
>+      nsCOMPtr<nsIPrefBranch> branch;
>+      rv = prefService->GetBranch(kMarqueePrefBranch, getter_AddRefs(branch));
>+      if (NS_SUCCEEDED(rv) && branch) {
>+        branch->GetBoolPref(kMarqueePrefName, &gEnableMarquee);
>+        nsCOMPtr<nsIPrefBranchInternal> branchInternal
>+            = do_QueryInterface(branch);
>+        if (branchInternal) {
>+          nsCOMPtr<nsIObserver> observer = new MarqueePrefObserver();
>+          if (observer) {
>+            branchInternal->AddObserver(kMarqueePrefName, observer, PR_FALSE);
>+          }
>+        }
>+      }
>+    }
>+  }


r=caillon otherwise.
Attachment #102728 - Flags: review+
I am planning to announce this to the API-changes list.  The reason I set
gHaveMarqueePref early was that if we are for some reason running in a pref-less
installation or one where prefs are broken in some way, we don't go to the
service manager every single time.
Ah.  Makes sense.  Wanna comment that?
I added the comment in my tree:

    // Set |gHaveMarqueePref| now, so we don't recheck if something fails.
Doron, BobJ:  Is this OK with you?  The patch makes a marquee pref that's
disabled by default, so anyone who wants to distribute a marquee-enabled Mozilla
would need to add

pref("browser.display.enable_marquee", true);

to their default preferences.
fine with me, we can turn on the pref for commercial.
Nice, but I would see 3 choices for marquee behavior: autoscroll, block and
scrollbars. Cite from bug 163048:

AFAIK <marquee> support was introduced mainly for Chinese users - see test pages at:
http://bugzilla.mozilla.org/show_bug.cgi?id=156979#c63

And if we'll parse <marquee> just as <div>, appearance of these pages will be
violently distorted. <marquee> has attributes WIDTH and HEIGHT, parsing as
simple <div> causes incorrect rendering width and height of <marquee> block and,
therefore, destroying page layout.

I tried to find method for displaying <marquee> which doesn't destroy appearance
and preserve usability.

But literally following W3C standards, we must render <marquee> as unknown tag,
i.e. simple ignore it and render even not as <div>, but as <span>.

As a result we have 4 alternatives to render <marquee>:
1. As inline element (conforms to standard, but completelly destroies page layout);
2. As <div> (better corresponds meaning of this tag, but causes layout problems);
3. With autoscrolling (exactly as MS Internet Explorer, preserves page layout,
but annoies users and causes usability problems);
4. With scrollbar (preserves page layout, saves usability and doesn't annoy).

I think, all 4 alternatives could be embodied in preferences, but it seems to me
that scrollbar might be a better choice.

Draft XBL for scrollbar emulation of marquee is available at:
http://bugzilla.mozilla.org/attachment.cgi?id=97516&action=view
one question - will this break people who use a external xbl file for <marquee>?
 That is valid...
No, it  should only override user or ua level styles.  (I haven't actually
tested, though.  Do you have a testcase?)
Is the ability to disable <marquee> by editing userContent.css,
insufficient?  The lines needed are already there as comments which
a user or distributor, could easily un-comment.  See
http://lxr.mozilla.org/seamonkey/source/profile/defaults/chrome/userContent-example.css
 25 /*
 26  * example: turn off "marquee" element
 27  *
 28  * marquee { -moz-binding: none; }
 29  *
 30  */

If this is done, I believe mozilla will resort to the old behavior
and treat the unknown marquee tag as a <div>.  We could default
it the other direction for mozilla and change it for commercial.

However, see previous comments about layout problems associated
with treating marquee as a div.  I like the scrollbar suggestion
that would preserve the page layout.

For whatever we do, make sure our testcases include both
horizontal and vertical marquees.
Bob, in theory that would work, but it doesn't because of the way XBL works. 
Once you load a binding, there is no way to unload it currently.  See bug 119078
and bug 163023 which look like dupes of each other.
a=rjesup@wgate.com for trunk checkin.  We at Wgate want this too.

Added 119078 and 163023 as dependencies, since I think the -moz-binding: none
solution would be preferable to a pref (unless we wanted to go for a fancier
solution with multiple ways to handle <marquee>).
Depends on: 119078, 163023
Whiteboard: [patch] → [patch][wgate]
http://bugscape.mcom.com/show_bug.cgi?id=20559 filed to track this for embedding
is it possible to set this userContent.css stuff over UI?
Comment on attachment 102728 [details] [diff] [review]
patch for backend of marquee pref

Fix checked in to trunk, 2002-10-14 17:06/07 PDT.

Leaving bug open for other work.
Attachment #102728 - Attachment is obsolete: true
Comment on attachment 102728 [details] [diff] [review]
patch for backend of marquee pref

I've changed my mind about this, and decided that I want to back this out.  See
my comments in bug 156979 comment 30.
David, do you agree that scrollbar might be reasonable compromise?
David: If you won't cooperate and rid us of the evil marquee, someone will
eventually back out your backout. :)

This bug is not an issue of compatibility, it's an accessibility issue. We're
violating section 508 requirements as well as numerous other accessibility
documents. I can't understand why the <MARQUEE> tag means more to you than that.
The section 508 requirement in question can't be enforced for pages using the
DOM and JavaScript, so I don't see why it's relevant to MARQUEE.  In fact, I
don't see any reason MARQUEE is any worse for accessibility than the ability to
use script on web pages.  In fact, it's probably not as bad since it can be
styled in userContent.css.
As I said over a month ago, the UI for this pref should be the same UI which 
disables blink and animated GIFs and other things that make for a "non-animated 
presentation mode". That's what's needed for the sec508 problem.
Incidentally, a=asa r=hixie on the backout to re-enable <marquee> on the trunk.
I'm really disappointed. IMHO, the only sense for supporting marquee is
preservation of page layout, because usually marquee are advertizing text which
only annoies and distract user from useful content on page.

Support of marquee as prolate MSIE extension is certainly attractive challenge
for Mozilla hackers and I'm amazing this accurate XBL emulation.

But we make our browser not only for our delight, but for end users. I consider
that scrollbar emulates marquee by more user-friendly method, and I would hear
serious arguments for autoscrolling against scrollbar.
Autoscrolling:  Perfect MSIE emulation.  Great for ad companies.
Scrollbar:  Better for readability via many screen readers for blind, etc...
Disble:  Less annoyance, period.

Make everyone happy.  Just put it in as a tri-state pref and tell me what the
pref is.  
Wasn't the idea to have one front-end checkbox (as Hixie said in comment 52)
that would set the seperate backend prefs for marquee, blink and all those other
annoyances?
Why would that require backing out this pref? Or if all these annoyances really
should be controlled by one pref, could we at least wait with removing _this_
one until someone has created that unified pref?
I agree with Hixie, a general accessibility should turn off marquee.
I would like to clarify that this bug is *not* for discussing marquee, *nor* for
discussing how to make marquee look prettier.

This bug is there for accessibility and usability reasons. The enhancement to be
worked on in this bug is supposed to be a GUI pref called something like "Ignore
annoying HTML elements" and should change the behaviour of tags such as
<marquee> or <blink> *at once*.
>The section 508 requirement in question can't be enforced for pages using the
>DOM and JavaScript, so I don't see why it's relevant to MARQUEE.

Yes, it can. If a user encounters a page with JavaScript animations they can
turn it off in Preferences. We need the same accessibility for marquee.

Even if you *do* think that for some reason Mozilla has an obligation to those
flickering Chinese sites that [mis]use marquees, there's absolutely no reason we
can't at least have access to a pref to turn it off! Especially since the code
already exists (a simple change to all.js would make it be enabled by default)!
And when there are accessibility documents that *mandate* that there be a way to
turn animations off, there really is no excuse for you to be backing out this pref.

No longer can you say "if you want it so bad, write a patch" because the patch
already exists, and you created it yourself! Now you're backing it out like a
fool. I suggest you think about what you're doing here.
Part of the reason I want to back the patch out is that it's too much code for
such a simple pref, and I don't like the design of it.  I'd rather see this pref
be part of a larger architecture for a auto-written user-stylesheet.

That said, we do provide a way to disable marquee.  You can edit
userContent.css.  That will do anything that this pref does.
(Why did I write a patch I didn't like?  Because I felt under pressure from
people who were threatening to quit in order to get their way.  That's a bad
precedent to set, and that's why I want to back the patch out entirely.)
> That said, we do provide a way to disable marquee.  You can edit userContent.css.

David, can you provide a rule that actually works then?

  marquee { -moz-binding: none }

does not, as I pointed out in comment 43.
  marquee { -moz-binding: none }

...really _should_ work, if it doesn't then we have an error in the cascade.
That doesn't remove the binding, it should prevent the binding from being set in
the first place.

If it really doesn't work please file a bug.
I think, the best choice might be reading user prefs directly in XBL, see
comment 23. This could spare us C++ code for this pref (David, is it what you
want?) and add flexibility for further similar issues (for example, to turn off
<blink> via XBL).

But unfortunately XBL is executing in current page context and can't read user
prefs (comment 25). Can we allow chrome XBLs (not XBLs from Web page, of course)
to read prefs? And what we must do for it?
Re comment 62: I just added the rule:

marquee { -moz-binding: none; }

to my userContent.css and marquees stopped animating.  I have no idea where this
myth about -moz-binding came from, but it's determined by the cascade just like
any other property.
When was marquee originally checked in? After 1.1? We should mention the
-moz-binding CSS to disable it in the release notes if we're going to mention
the addition of support for an IE extention (and an annoying one at that).

Is marquee disabled in Strict?
David, I have read your explanation, but I can't agree with your reasons.

> Having forks in the code hurts testing and development.
Yes, 100% yes. But editing userContent.css to disable marquee is wrong method as
compared with preferences GUI. Reasonable solution might be reading user prefs
directly in XBL.

>Having an implementation of marquee improves our compatibility with the web,
>and we are a web browser.
Maybe, maybe...
But does this mean that we must support _all_ MSIE extensions _exactly_ as MSIE?
We don't support <bgsound> (one of favorite backdoor for e-mail viruses in
Outlook), VBscript or ActiveX - and must we support it in future?

I can't see any advantage for autoscrolling against scrollbar (for example).
Marquee in 99% cases is being used for advertizing - and the fact that you
prefer the most annoying implementation for marquee denotes that you more like
ad companies than end users.

>Much of the opposition to marquee is related to marquee being
>nonstandard, yet few people have objected to the many nonstandard
>things we do because Netscape 4.x, and in some cases also MSIE for
>Windows, do them.  Nor do people object to all the tiny details of
>layout that we imitate despite that they are not described in any
>standard
I don't argue, MSIE have some non-standart, but very useful extensions, such as
innerHTML and offsetWidth properties or transformNode method.

But marquee isn't useful for webserfers. Layout problems can be solved with
scrollbar. Another problems? I don't see it, maybe, you do?

>From an accessibility perspective, marquee is not nearly as bad
>as the equivalent script
Yes, but I always can turn off annoying scripts via prefs - both wholesale (all
JS) and by retail (pop-ups, reading cookies, substitution of status bar etc.).
But thanks to your diligence we lose pref for marquee.

Summing up: you tell reasonable things. But in this case your arguments miss
beside the mark.

My propositions:
1. Allow reading user prefs from chrome XBLs. I don't know how to do it, but, I
hope, this isn't a hard work. I have opened bug 177660 for this issue.

2. Create XBL for marquee with tree alternates (block, scrollbar, autoscroll).
with scrollbar as default. If reading user prefs within XBLs will be allowed, I
engage myself to write this XBL soon.
Depends on: 177660
Related: Bug 159704 (some fixes for marquee)
> Reasonable solution might be reading user prefs directly in XBL.

That adds extra bloat and performance loss to our XBL loading just for this
trifle of all tags that is used highly infrequently.  If you mean from with the
XBL content as opposed to the backend, then you are still incurring a
performance hit as opposed to the userContent.css method, because you have
already paid the cost for the binding at that point.

> does this mean that we must support _all_ MSIE extensions _exactly_ as MSIE?

No.  We don't even support marquee exactly as MSIE does.  We support it
partially, so that 99% of the sites that use marquee work.  To get the other 1%
to work, we would have to do an insane amount of work, which is not feasible. 
We support this because it was easy to support what we did, and because there
are sites that require it.  Go look at some of the other bugs where Bob Clary
posted the links to sites that need this.

> Marquee in 99% cases is being used for advertizing

Marquee in 99% of cases isn't even used.  I find it hard to believe that this
annoys this many users as often as wolf is being cried.  What I do when I visit
sites that annoy me is *gasp* stop visiting them.

> I always can turn off annoying scripts via prefs

You totally missed the point.  If you force authors to write JS, then their
content is in (generally) the JS:

  |var textToShow = "Sniper Caught!  Rifle Found in Car is Tied to Killings";|

If you disable JS, you lose that content completely and have no idea that the
sniper is caught.  However if you just disable the binding, you still are able
to see the content, and access its linked text if there is a link embodying it.
>That adds extra bloat and performance loss to our XBL loading just for
>this trifle of all tags that is used highly infrequently.
Almost 2 month ago I wrote a draft XBL to provide three alternates. Its size was
14K against 11K of original XBL. Is this a bloat?

Perfomance loss isn't a problem because execution time would be increased only
by time to switch statement - code for another choices isn't being executed
anyway. More serious problem is performance loss during autoscrolling - and
ability to turn off marquee or scrollbar emulation of it saves this time.

>We support this because it was easy to support what we did,
>and because there are sites that require it
Your arguments against scrollbar emulation?

>However if you just disable the binding, you still are able
>to see the content, and access its linked text if there is
>a link embodying it.
Why I must edit some files in my profile manually to tune up my browser? What is
an conceptual reason to deny turn off marquee via preferences dialog?
>I can't see any advantage for autoscrolling against scrollbar (for example).
>Marquee in 99% cases is being used for advertizing - and the fact that you
>prefer the most annoying implementation for marquee denotes that you more like
>ad companies than end users.

We support JavaScript and Image, which are mostly used for ads.  So should we
turn those off too?

Get real, how many here have encountered a site using marquee in daily
websurfing? I haven't and I wrote the original impl. 

You who hate marquee should be happy we implement it - this will make sites go
from hacked up javascript/flash/java tickers to <marquee>, and then you can
disable them all at once with some css changes.
>We support JavaScript and Image, which are mostly used for ads.
>So should we turn those off too?
We have very flexible prefs to control JS and images which allow turn off
annoying ones without affect to necessary scripts/images.

And we haven't any prefs to control marquee without profile hacking. Is it correct?

>Get real, how many here have encountered a site using marquee
>in daily websurfing?
Alas yes, practically daily. Furthermore, webmasters get to know that marquee
now works in Gecko browsers and this evil extends more and more.

Fortunately I use my own XBL which provides scrollbar ;))) and I want users to
be enabled choose desired behavior: I consider they to have this right firmly.

>I haven't and I wrote the original impl.
Great work, really. I'm not programmer, only webmaster and I'm amazing. If bug
177660 will be fixed, I shall consider for honour to bring the modest
contribution to your work.

Another argument in favour of scrollbar: autoscrolling causes usability problems
even if you like content of marquee.

Assuming that you see page with marquee. Two troubles are possible.

First case: text or link that would interest you, is placed far in the tail. You
must wait a long time to see it - and probably you simply willn't wait until it
will appear on screen and therefore you willn't notice it.

Second case: interesting link appears in first place, you notice it, but while
you read remaining content at page, the link is crept away. And agonizing
suspense again...

Scrollbar easily solves both problems, gives instant access to any passage in
marquee and doesn't annoy. And it saves main advantage of marquee - preserves
page layout. I use scrollbar XBL about 2 months and to me never there came an
idea to return to an autoscrolling. Simple test it - and I hope, you will agree
with me.

Finally - let user to choose how he want to see marquee. Let not consider, that
we it is cleverer than him.
Doron, disabling marquee with some css changes is only feasible for the elite
few.  If Mozilla is to continue to expand market share, we must not frustrate
our userbase with a feature that a significant percentage feel negative about,
unless we give them a way to disable that feature within the realm of their
understanding and ability. Adding a marquee to a site using the marquee tag is a
lot easier than doing so with JavaScript or Flash. The importance of this bug
will only grow over time. The bottom line is, we need a pref with UI for
disabling marquee. 

Leaving marquee on as a default is not a problem, as long as there is UI
available to turn it off.
Whiteboard: [patch][wgate] → [wgate]
>Doron, disabling marquee with some css changes is only feasible for the elite
>few.  If Mozilla is to continue to expand market share, we must not frustrate
>our userbase with a feature that a significant percentage feel negative about,
>unless we give them a way to disable that feature within the realm of their
>understanding and ability.

So Internet Explorer, which has marquee, owns the market.  I fail to see why
people would not move to mozilla because of marquee.  I see no diemarquee.org
movement trying to get rid of it in IE.

If there is a pref that would help accessible users (not sure how they are
actually called), and if that pref by chance also gets rid of annoyances, then
that sounds fine.  Just targetting marquee is plain childish, our market share
increased a bit even during the period we added it.

If you really want to make the browser better, then create one pref that rules
them all, not one pref for each minor kingdom that wants something...
Why do I feel like I am repeating myself. This pref's UI should be the same UI 
which disables blink and animated GIFs and other things that make for a 
"non-animated presentation mode". That's what's needed for the sec508 problem.
Summary: add pref for disabling annoying non-standard HTML elements ("DHTML Tags") → non-animated mode pref (disabling marquee, t-d:blink, anim gifs, mngs)
I can't agree with global "non-animated" pref. Animated gifs (and particularly
MNGs) often contain essential information. I use animated gifs occasionally, for
example, I have used it to demonstrate new design of combustion engine. If user
will turn off animation, he willn't see how this engine works. Of course, I
could use AVI or Java applet in this case, but animated gif appears as the most
compact and compatible solution.

But marquee animation doesn't contain additional information besides it content.

>So Internet Explorer, which has marquee, owns the market.  I fail to see
>why people would not move to mozilla because of marquee.
>I see no diemarquee.org movement trying to get rid of it in IE.
>our market share increased a bit even during the period we added it
Rather, exactly rather. Millions of users make mass demonstration and scan:
"Give us marquee! Give us marquee!".

And they install Mozilla instead of MSIE not thanks to it security, standards
compliance and usability but exclusively being inspired marquee support...

"I don't believe" - said Stanislavsky in similar cases. I consider that marquee
support doesn't affect to user choice or even affects negatively. And
overwhelming majority of my friends and coworkers consider same.

The only benefit of marquee (according bug 156979 comment 63) is preserving of
page layout. Scrollbar solves this problem by more considerate way. Your
arguments against?
I am baffled as to why you care _so_ _much_ about <marquee> but make so little
fuss about MNGs, our non-standard DOM support, our screwed up non-standard
inline box model, <blink>, and the myrad or other potentially annoying features.

The fact is that while _you_ find <marquee> annoying, a number of our users
(primarily in the Chinese market) like it, and find that many of their sites are
significantly better because of it.

If you are so irritated my this feature then either disable it or avoud sites
that use it. The fact of the matter is that most of our users don't even know
<marquee> when they see it, and have even less against it. A pref just for that
feature would simply complicate our UI while providing little tangible benefit
to the majority of our users.
OK, our dispute can be solved only by one way. Let chinese users (unfortunately
I know no one from China, maybe you do?) test scrollbar XBL and then share their
impressions in this thread.
> I am baffled as to why you care _so_ _much_ about <marquee> but make so little
> fuss about MNGs, our non-standard DOM support, our screwed up non-standard
> inline box model, <blink>, and the myrad or other potentially annoying features.

Nobody uses MNGs yet, DHTML animations are uncommon because it would take a
significant amount of programming to annoy the user, the box model doesn't
particularly bother me as a web surfer (I might gripe about it if it comes up
when I'm developing), and BLINK has a hidden pref (bug 106462 to put it in the UI).

The only annoyances that appear with any regularity, because of their easy use,
are BLINK tags and MARQUEE tags. They are dangerously popular on auction sites
(and you really can't "avoud [sic] sites that use it" because there may only be
one auction for the item you want).

As for the argument that there are no sites protesting Marquees... A simple web
search found me this site:

<http://mozilla.weebeastie.net/marquee.shtml> - The fix no longer works thanks
to David's actions. His complaint (a valid one) is that he cannot read scrolling
text on his passive matrix LCD screen.
Editing userContent.css still works.
"DHTML animations are uncommon because it would take a significant amount of
programming to annoy the user"

yet there are move dhtml marquees that <marquee> on the web...
*** Bug 106462 has been marked as a duplicate of this bug. ***
Again: editing userContent.css is too complicated for unexperienced users.

Usability problems with marquee aren't far-fetched (see comment 74 and comment 81).

Many users wannot see marquee animation. I have asked 41 user in our company, 32
are against marquee autoscrolling, 7 think indifferently and only 2 are pro -
they are sales managers ;)

If you refer to chinese users to like marquee, please, let me hear them here or
communicate with them directly.

I still consider that the most constructive and convenient way to solve this
issue is fixing bug 177660.

And, please, do not combine in one preference disabling marquee and animated
images. Marquee and blink might be combined, but it willn't be sufficient if bug
177660 will be fixed.
Internal prefs and UI prefs need not map 1:1.
I know :) but there is a lot of pref tweakers and toolbars at mozdev.org ;)
Give us a pref in prefs.js, and we make the rest.
You have a pref, it's in userContent.css. :-)
It isn't a pref, alas. Pref is string in prefs.js, afair ;)

Concerning blink - if bug 177660 will be fixed, we could remove C++ code for
browser.blink_allowed pref (is it what David Baron wants in comment 67?) and
make <blink>-binded XBL to read user pref and allow/suppress blinking.
No, a blink pref couldn't be implemented in XBL because we need to turn of
'text-decoration: blink' in addition to HTML's BLINK element.
Of course, but there are two similar, but different things relating blink.
text-decoration:blink is a valid CSS property, but <blink> is non-standard
extension from older Netscape browsers. Enabling CSS blinking and suppressing
<blink> tag might be an allowable choice, especially in strict HTML/XHTML mode.
Why does this have to be so much more complicated than it actually is?

* A pref in the UI to turn off scrolling marquees.
* A pref in the UI to turn off blinking text.

Why entangle all this political correctness, quirks vs. standards, and tedious
workarounds? In the time we've spent debating it in this bug, someone could've
written a patch to add those two options to the UI and this would be done.
Instead we have to do everything "my" way, with the "my" referring to each of
the people who has added comments to this bug. If anyone can just get the change
made, everyone can mark the checkbox the way they want it and be happy!
Skewer, I agree with you, but problem is slightly deeper.  We all have an
intention to solve this bug, we discuss how to do it. David justly consider that
superfluous forks in C++ code complicate developing and debugging.

If you really want to help us, please pay attention to bug 177660. If we'll fix
this and write XBL with fork depending of marquee pref, corresponding UI is
that'll come.
I disagree that allowing prefs to be read from XBL and complicating the XBL is
the right solution.  I think the right solution is coming up with a better
mechanism for generating a stylesheet from preferences.
Maybe, you're right... but my reason is this:

I still consider scrollbar to be the most adequate emulation for <marquee> tag.
But if we'll accept your proposal, we should write two XBLs separately for
autoscrolling and for scrollbar. These XBLs will be very similar, differences
will be present only in three CSS parameters and in autoscrolling module. See
"durty hack" at http://bugzilla.mozilla.org/attachment.cgi?id=97516&action=view

Fork in united XBL might economize our work and reduce overall number and size
of files.

More, in the future this opportunity (reading prefs from binded XBL) might be
useful for another cases. For example, I sometimes think about adding in Mozilla
ability to support WML (markup for cellular phones) through binding XSL
transformation to <wml> tag.

And, finally, giving to XBL binded by html.css permission to read user prefs is
probably simpler and eleganter than implementing interface for preferences
dialog to edit userContent.css. I don't know what is a security bug 177639 (bug
177660 was marked as it dupe), but I hope that work at 177639 will have fixing
177660 as a collateral result.
btw, we had a Accessibility fair on Campus and the tools they showed us did the
following:

 - converting a page of text to one line of scrolling text (in big letters)
 - making the blinking cursor even bigger

:)
*** Bug 189004 has been marked as a duplicate of this bug. ***
Blocks: 119597
This bug appears to have been abandoned. Meanwhile Mozilla is still violating
Section 508 and the User Agent Accessibility Guidelines by not providing a
mechanism to the end user to turn off marquee. Can anyone else take this bug?
adt: nsbeta1-
Keywords: nsbeta1nsbeta1-
Renominating for nsbeta1 because:

Mozilla (and Netscape) violates Section 508 and UAAG because of this bug.

Users with epilepsy and vision impairment will be unable to use the browser
because of this bug.

A critical user satisfaction issue is introduced when irritating animation
effects like blinking and scrolling text are enabled and mandatory.

A patch exists for this bug.

If marking nsbeta1- again please explain your reason for disputing these
problems caused by this bug.
Keywords: nsbeta1-nsbeta1
skewer: there is no patch that i can see.
A pref for this will do no good until plugin manager is enhanced to easily
toggle on and off things like Flash. Preferably "click-to-launch" mode for
objects would be implemented as well.

Ted Mielczarek created a prototype of that at
http://ted.mielczarek.org/code/mozilla/ but it only hides them, the plugin still
loads (a big problem for Java, where startup can drain a disgusting amount of
system resources).

Also I see his page now links to bug 169330.

Plugin click-to-view could DEFINITELY be a "can't go back to IE" feature. It's a
beautiful solution to flash ads (annoying) and java ads (annoying, and major
perf). When did it become acceptable for advertisers to appropriate our plugins?
don't touch netscape keywords
Keywords: nsbeta1nsbeta1-
Flash isn't our problem. If a user doesn't want Flash animation to appear he can
uninstall the plugin.
*** Bug 209949 has been marked as a duplicate of this bug. ***
No longer depends on: 177660
Depends on: 59701
Keywords: sec508
*** Bug 270838 has been marked as a duplicate of this bug. ***
Assignee: dbaron → nobody
QA Contact: ian → style-system
Blocks: 438848
Priority: P2 → P3
Target Milestone: mozilla1.2beta → ---
This is a safety issue. I'd been using add-ons such as QuickJava to protect myself from animated gifs, but they aren't working with Waterfox 56 and aren't compatible with Firefox 57+. There is an about:config setting but it only works on some gifs.
See Also: → 1680828
Severity: normal → S3

The severity field for this bug is relatively low, S3. However, the bug has 4 duplicates, 33 votes and 55 CCs.
:emilio, could you consider increasing the bug severity?

For more information, please visit auto_nag documentation.

Flags: needinfo?(emilio)

We supports prefers-reduced-motion now, and sites can use it to reduce animations. We prevent animating marquee by default now.

Status: NEW → RESOLVED
Closed: 2 years ago
Flags: needinfo?(emilio)
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: