Unresponsive Script, tried Firefox remedies, still need help
I'm running Win 7 Pro 64 bit, Firefox 45.0.2 Firefox hangs for about 22 seconds on some websites. This is a solid failure for a specific website. The failure is recreate-able and occurs even after disabling all Add Ons and Extensions, turning off hardware acceleration and reverting to the default theme. If I open another instance of Firefox, both browsers hang until the unresponsive script is stopped. Modifying dom.max_script_run_time up or down had no impact on symptoms (hang is still 22 seconds). The problem recurs after Firefox Refresh. The problem does not occur in safe mode, or if I disable javascript in about:config. I don't want to disable scripts on a website by website basis. I have another machine with the same system and browser and if does not fail at all. Can you please provide some further troubleshooting tips? I don't want to go back to IE!
被采纳的解决方案
Yes, while that dialog is displayed, Firefox will pause that script, that's normal. If the page can't do anything further without that script completing, then the whole tab will pause.
The script is for mapping (http://openlayers.org/), and it seems the site uses version 3.7.0 from July 3, 2015. Not sure if a newer version (the script is up to version 3.15.1 at https://github.com/openlayers/ol3/releases) would help, but anyway, that change would need to be made by the site so it's not a viable workaround for you.
When I look at line 160 of the script it is basically unreadable:
function Zi(b,c){var d;if(Xi()){if(m(6)){var e=Array(16);for(d=0;16>d;++d)e[d]=c[d].toFixed(6);d=e.join(",")}else d=c.join(",");Yi(b,"matrix3d("+d+")")}else if(Wi()){e=[c[0],c[1],c[4],c[5],c[12],c[13]];if(m(6)){var f=Array(6);for(d=0;6>d;++d)f[d]=e[d].toFixed(6);d=f.join(",")}else d=e.join(",");Yi(b,"matrix("+d+")")}else b.style.left=Math.round(c[12])+"px",b.style.top=Math.round(c[13])+"px"};var $i=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function aj(b,c){var d,e,f=$i.length;for(e=0;e<f;++e)try{if(d=b.getContext($i[e],c),null!==d)return d}catch(g){}return null};var bj,cj=ba.devicePixelRatio||1,dj=!1,ej=function(){if(!("HTMLCanvasElement"in ba))return!1;try{var b=Vi();if(null===b)return!1;m(b.setLineDash)&&(dj=!0);return!0}catch(c){return!1}}(),fj="DeviceOrientationEvent"in ba,gj="geolocation"in ba.navigator,hj="ontouchstart"in ba,ij="PointerEvent"in ba,jj=!!ba.navigator.msPointerEnabled,kj=!1,lj,nj=[];
It does seem to be trying to use WebGL, a graphics drawing technology. That can be influenced by your graphics card driver software. Could you check for updates? This article suggests safe ways to do that: Upgrade your graphics drivers to use hardware acceleration and WebGL.
定位到答案原位置 👍 0所有回复 (5)
Do you eventually get the unresponsive script warning dialog, or does Firefox just wake up and move forward? If you extended the run time in about:config, that might be bypassing the dialog. I'm asking in case the script listed in the dialog is a known culprit.
Another common cause of unresponsive script errors on Windows 7 is the protected mode feature of the Flash player plugin. That feature has security benefits, but seems to have serious compatibility issues on some systems. You can disable it using the Add-ons page. Either:
- Ctrl+Shift+a
- "3-bar" menu button (or Tools menu) > Add-ons
In the left column, click Plugins. On the right side, find "Shockwave Flash" and click the More link. Then uncheck the box for "Enable Adobe Flash protected mode" and try that for a day to see whether it helps.
I missed the part about Safe Mode --
Agnon said
... The failure is recreate-able and occurs even after disabling all Add Ons and Extensions, turning off hardware acceleration and reverting to the default theme. ...
The problem recurs after Firefox Refresh.
The problem does not occur in safe mode, or if I disable javascript in about:config.
-- do you mean Firefox's Safe Mode or Windows' Safe Mode?
In addition to disabling all extensions, Firefox's Safe Mode also disables the JavaScript compilers, which are designed to speed execution of scripts but which may have undiscovered problems with some scripts. I'm not sure how best to test that possibility.
Thanks for the replies. I added a capture of the "unresponsive script" message. Firefox hangs until I click on Stop Script. I do not see how it could be an Add On, or Extension as the problem recurs after Firefox Refresh. I also disabled all Add Ons, Extensions, Themes prior to refresh and the problem recurred. The problem does not occur in Firefox Safe Mode. I suspect that it has something to do with Javascript because if I disable javascript in About:config (not FF Safe Mode) the problem goes away.
选择的解决方案
Yes, while that dialog is displayed, Firefox will pause that script, that's normal. If the page can't do anything further without that script completing, then the whole tab will pause.
The script is for mapping (http://openlayers.org/), and it seems the site uses version 3.7.0 from July 3, 2015. Not sure if a newer version (the script is up to version 3.15.1 at https://github.com/openlayers/ol3/releases) would help, but anyway, that change would need to be made by the site so it's not a viable workaround for you.
When I look at line 160 of the script it is basically unreadable:
function Zi(b,c){var d;if(Xi()){if(m(6)){var e=Array(16);for(d=0;16>d;++d)e[d]=c[d].toFixed(6);d=e.join(",")}else d=c.join(",");Yi(b,"matrix3d("+d+")")}else if(Wi()){e=[c[0],c[1],c[4],c[5],c[12],c[13]];if(m(6)){var f=Array(6);for(d=0;6>d;++d)f[d]=e[d].toFixed(6);d=f.join(",")}else d=e.join(",");Yi(b,"matrix("+d+")")}else b.style.left=Math.round(c[12])+"px",b.style.top=Math.round(c[13])+"px"};var $i=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function aj(b,c){var d,e,f=$i.length;for(e=0;e<f;++e)try{if(d=b.getContext($i[e],c),null!==d)return d}catch(g){}return null};var bj,cj=ba.devicePixelRatio||1,dj=!1,ej=function(){if(!("HTMLCanvasElement"in ba))return!1;try{var b=Vi();if(null===b)return!1;m(b.setLineDash)&&(dj=!0);return!0}catch(c){return!1}}(),fj="DeviceOrientationEvent"in ba,gj="geolocation"in ba.navigator,hj="ontouchstart"in ba,ij="PointerEvent"in ba,jj=!!ba.navigator.msPointerEnabled,kj=!1,lj,nj=[];
It does seem to be trying to use WebGL, a graphics drawing technology. That can be influenced by your graphics card driver software. Could you check for updates? This article suggests safe ways to do that: Upgrade your graphics drivers to use hardware acceleration and WebGL.
I don't have a discrete graphics card, but I do have Intel's 4600 on the motherboard. In device manager, it only showed a standard VGA device and driver. I downloaded the Intel 4600 Driver and installed it. That fixed the script hang problems in Firefox. Many thanks for the technical help. You fixed it!!!