Comments (8)
It seems a Firefox regression (it does not happen in Firefox ESR 115, it does in 128 and above).
The page rendering is stopped as soon as an asynchronous XMLHttpRequest is sent, which is a hack needed for NoScript to be configured and ready before any page script is able to run.
Investigating, thanks.
from noscript.
Synchronous XHR, I presume?
I recall a relatively recent report in Firefox originally attributed to NoScript and another extension, at https://bugzilla.mozilla.org/show_bug.cgi?id=1899786 where XML document rendering broke when OMT decompression was enabled by default. The test case here (standardebooks.org) is a XHTML document served with Content-Type application/xhtml+xml; charset=utf-8
. I haven't confirmed whether it would also be affected by the same issue, but wouldn't be surprised if it is.
from noscript.
Synchronous XHR, I presume?
Correct, fixed my comment.
Thank you, I can confirm it's the same issue: it goes away indeed as soon as you flip the network.decompression_off_mainthread2
preference to false.
Since it's marked as 129 wontfix, I presume I will need some kind of work around for NoScript and certainly patching Tor Browser 14.x (based on ESR128).
from noscript.
Added a work-around (another hack, of course!) in NoScript 11.4.34rc2.
Please verify, thank you.
from noscript.
What do you expect to happen in Firefox by using hackademix/nscl@397a6f9 ?
Do you get the same effect if you call filter.disconnect() from filter.onstart (instead of filter.close() from filter.onstop)? Forwarding the full response body without needing the response body itself seems rather wasteful.
from noscript.
What do you expect to happen in Firefox by using hackademix/nscl@397a6f9 ?
To force the (gzip) decoding to finish before the actual parsing / rendering / event dispatching starts.
Do you get the same effect if you call filter.disconnect() from filter.onstart (instead of filter.close() from filter.onstop)?
Forwarding the full response body without needing the response body itself seems rather wasteful.
If I do as you suggest it seems nothing gets to the page and I consistently get the dreaded yellow/red XML parsing error page.
What does seem to work is calling filter.disconnect()
from ondata()
after writing the first chunk of data, but I'd like to check with a very big xml document forcing the streamfilter to split the data in multiple chunks before calling it a win.
from noscript.
@Rob--W wrote:
Do you get the same effect if you call filter.disconnect() from filter.onstart (instead of filter.close() from filter.onstop)?
If I do as you suggest it seems nothing gets to the page and I consistently get the dreaded yellow/red XML parsing error page.
I'm not sure what I was looking at this morning, but in the meanwhile I managed to test with big XML files (~10MB), double checking they were bigger than the ondata buffer and passing through only the first ~16Kb chunk. Since it worked, as a second thought I retried filter.disconnect()
in filter.onstart
and, lo and behold, it worked as well!
So I'm likely going with your suggestion in rc3, thank you (hackademix/nscl@56a81d1).
from noscript.
I wrote:
So I'm likely going with your suggestion in rc3, thank you (hackademix/nscl@56a81d1).
Unfortunately I had to revert to the original "wasteful" version, because calling filter.disconnect()
either in onstart
, or in ondata
after writing the first chunk, actually caused problems (broken rendering and unresponsive stop UI on long documents) even if not evenly reproducible.
Therefore I'm releasing 11.4.34 with the full passthrough work-around, which seems much more reliable, and working at a minimal test case to check what's actually wrong with disconnect()
.
from noscript.
Related Issues (20)
- NoScript blocks displaying images at https://www.haisenryakuzu.net/
- [Bug] Occasional crash when calling NoScript (Android/Firefox) HOT 1
- CSP media-src issue HOT 2
- [Bug] OpenSpeedTest doesn't work, even with restrictions disabled HOT 3
- Some blocked capability reports from subframes are not propagated to the main frame and therefore are missing from the UI HOT 1
- Whitelist localhost ports? HOT 1
- Prevent duplicate synthetic placeholders for invisible capability probes HOT 4
- SVG generates `Couldn’t process unknown directive ‘noscript-marker’` warnings HOT 1
- Webgl capability not highlighted when the page requests it
- NS on Firefox triggers "InternalError: too much recursion" and infinite "save" dialogs on Economist.com article even when restrictions disabled
- 2477april2024.com refused to block
- Please add option to disable automatic page reloading
- noscript setting icon disapear in firefox HOT 1
- Add challenges.cloudflare.com to default whitelist
- NoScript sometime stuck webpage loading with high CPU usage
- Can not remove last saved XSS choice from Advanced settings
- [chrome] tab crash on diffchecker.com with Noscript 11.4.38 and newer HOT 3
- releases
- console.debug statements in nscl: SyncMessage.js and patchWindow.js
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from noscript.