Description

The <<FullSearch>> macro causes a script error in Internet Explorer 8 on page load. Inclusion of FullSearch causes the page to load very slowly, and eventually IE8 presents a dialog box prompting the user to stop the script.

UPDATED: Appears only to occur when FullSearch resides in a {{{#!wiki someclass }}} block.

IE8 warning dialog: "A script on this page is causing your web browser to run slowly. If it continues to run, your computer might become unresponsive."

Steps to reproduce

  1. Include the macro <<FullSearch>> on any wiki page UPDATED: inside a {{{#!wiki someclass }}} block

  2. Load the wiki page in Internet Explorer 8

Example

FullSearchIEFailure.png

{{{
#!wiki someclass
<<FullSearch>>

}}}

Component selection

Details

MoinMoin Version

1.9.3

OS and Version

CentOS 5.5

Python Version

2.4

Server Setup

Server Details

Language you are using the wiki in (set in the browser/UserPreferences)

en-US

Workaround

I found similar errors with IE9 when trying to view RecentChanges and Search pages on our intranet wiki. Try turning off all Compatability View settings in IE... that completely solved our script time-out problems.Moin 1.9.3 / Python 2.6.6 / Apache 2.2.19 (for python 2.6.6) / Win32
-- ScottCunningham 2013-03-14 18:30:08

Discussion

This is likely not a moin bug. Fullsearch takes some time to do its job, if IE doesn't wait that long and displays misleading warnings, this is not moin's fault.

You say Fullsearch takes some time to do its job ... Are you referring to fullsearch returning results? This bug occurs when FullSearch initially displays its search form, not when returning results. Doesn't appear to be a question of IE not waiting long enough. Rather, while IE is drawing the search form before searching, some script is causing IE to rise to 100% CPU and eventually to offer to timeout the errant script. Declining IE's offer to stop the script will cause it to continue spinning at 100% CPU, and whatever task it is trying to complete will never finish.

If the script is halted, you can complete a search and display results without issue.

UPDATED: I just ran the JS profiler in IE8 and narrowed the problem to the while loop at line 633 (v 1.9.3) of MoinMoin/web/static/htdocs/common/common.js. In our case, FullSearch exists inside a {{{ }}} block to apply a special class. walkDom() does not exit its while loop when encountering FullSearch in that context.

Please note:


The bug appears to be similar to http://moinmo.in/MoinMoinBugs/FormInsideTableCausesIE8ScriptLoop. You can verify by following the instructions near the end of that page to replace common.js. It is an IE8 bug. The fix just adds a loop counter to break out of a broken DOM structure. Ditto the recommendation to upgrade to 1.9.6.

If replacing common.js fixes the problem, please comment here so we can close this issue.

The default setting for IE9 makes it run in IE8 compatibility mode on intranet sites. So this bug can occur with IE9.

RogerHaase: I could not reproduce bug (on 1.9.6+) with IE8, IE8 in IE7 compatibility, nor IE7.


Upgraded from 1.9.3 to 1.9.6 on our office wiki that showed this problem (timeout scripts with IE9). Problem was eliminated even in compatibility view. Just noticed 1.9.7 became available today (ugh)


Plan


CategoryMoinMoinNoBug

MoinMoin: MoinMoinBugs/FullSearchIE8ScriptError (last edited 2014-01-04 17:33:02 by ThomasWaldmann)