LibreJS considers a very strict subset of JavaScript to be acceptable for use in non-free scripts. This is meant to maximimize compatibility with websites that haven’t tried to be LibreJS compatible.
We consider modification of the document non-trivial. There isn’t much that javascript could do that we would consider trivial, for anything else a free software license would be required.
The criterion is as follows:
For each function definition:
For the rest of the script, outside of function definitions:
"function" means anything executable that gets a name, including methods.
Allowed primitives exclude: