Marti Admin

Re: @684102:

Why we're don't allow to do that ? by using this scripts, you agree to enter into the "acceptable ads" program.
We collect things help us improve the script and serve ads to you. Nothing free at all, similar as facebook and google.

You are seriously bordering on violating our TOS as well without divulging this beforehand. If I find any code that does when I get back to dev station it will be applied.

OUJS Admin

Re: @Logological:

You've been moved the appropriate discussion.

I suspect that the modern user scripts that I'm running may not be functioning very well due to running on a very old version of GreaseMonkey.

We wouldn't know because you just signed up. If they are asynchronous then probably not i.e GM.whatever vs GM_whatever. A lot depends on what happens with SM as they crawl towards wherever they are headed. If they venture towards WebExtensions then GM actual, TM, or VM will be favored most likely. GM Port can only crawl as fast as its charter and SM actual changes.

If there are no plans by the original developer to continue maintaining the port

See above for the status of this branding. You may of course fork it, maintaining exact licensing and credits, but with a different branding if you want TM like features or the less adopted GM.whatever API... however it would not be wise to ignore the linkage from SM status meetings as well as here.

A lot of time will be needed because there are way too many variables on the playing field. If you are looking to see if it's abandoned... it is not.

Re: @Титан:

Just "add" button isn't works.

It's not an add button it's a copy to clipboard button depicted by the icon and the tooltip. So yes it does work as expected. :)

How to delete topic?

You don't.

OUJS Admin

Re: @wishingking:

but I don't know why it became a new library.

That is how it works. If you change @name it makes sense that's a new script.

Btw if you flag a library for moderation again and mark it as a "favorite" that could be grounds for removal for flagging abuse.

Use the up and down arrows if you like or dislike a script library not the Flag for moderation.

Appreciate your cooperation,
OUJS Admin


If you are just going to delete the library after announcing it you might want to not consider advertising it here.

We do have the listing on the Libraries page, sorted by recently updated just like Userscripts, to do this sort of thing along with the Script Info as you already know.

OUJS Admin



I think userscripts have a @run-at default of document-end, so wrapping it in a ready function doesn't seem necessary

GM's @run-at currently states:

The default if no value is provided. The script will run after the main page is loaded, but before other resources (images, style sheets, etc.) have loaded.

jQuery's $(document).ready currently states:

Code included inside $( document ).ready() will only run once the page Document Object Model (DOM) is ready for JavaScript code to execute.

... and also states ...

Code included inside $( window ).on( "load", function() { ... }) will run once the entire page (images or iframes), not just the DOM, is ready.

So if you need complete page load the latter jQuery reference is what to use... otherwise the former and/or GM's @run-at should be okay if the DOM is all you are looking for.

But... Note some types of CSS can add content on the fly with a style sheet. I don't see you using a MutationObserver so it's probably okay for now.

May want to have the noConflict option put in mentioned here for .user.js engines that may need that.

... it seems Greasemonkey needs to be told explicitly to use unsafeWindow's jQuery.

  1. Depends on the GM version and Firefox version. Sandboxing comes and goes (both are facing long term growing pains from Moz and changes) which is why one should always use an IIFE for best practices on ones code.

  2. Sites Cross Origin policy could have changed too, along with Firefox version, to prevent certain things from being shared/utilized.

Re: @julzyw:

I would suggest that you be very careful about replies that vaguely fit into the topic... especially here.

OUJS Admin

See this point in your current code.

If you want to display a portion of it use // for @description instead. Also probably won't show up in any .user.js engine script list with the description if available.

OUJS Admin

Re: This line

The NASA license is a U.S.A Governmental license. If you aren't a government agency it can be a felony to impersonate one. There are also international laws that prevent impersonation. i.e. extradition treaties and possible existing sanctions.


It's left in here in case we get some more government staff in here... so pick carefully and you would be required to fill out what agency, etc., exactly for this FOSS license inside of your script. See SPDX example at NASA.

OUJS Admin

Talk about a dated issue. ;) The SPDX codes changed a while ago. So GPL-3.0-or-later is the current norm. If you go into "Edit Script" they are all listed.

OUJS Admin

atob for those being picky too... inverse function. If you need specific implementations usually it's best to have a library from a common, well known, source.

OUJS Admin

Re: @Lera_Rosalene:

Obfuscation is, in part, when you can't immediately read it with the existing tools on the site (Beautify for example). From what I've examined on your script you are mangling (shortening to be specific) your identifiers (variables) to one letter identifiers and LF/CR equivalents (minification). This in my book is okay atm however if you start substituting with hex identifiers or making the strings unreadable on what you are doing (base64 for example) then any user may be eligible for immediate, unnotified, removal. localStorage for example on your script, if you were to obfuscate built in identifiers that would be a TOS ding. Usually more critical are external urls, cookies, QSP, port to port, and ajax (xhr) requests. If they become obfuscated then the axe will fall.

What should I do to help people confirm that my code is not malicious?

A SCM (like GitHub, GitLab, etc.) that has the pure raw, readable, code is always a plus for evaluation of the readability. Usually it's best to include a framework stub with the script encapsulated in an IIFE (for your scripts safety) that does it on the fly. For example btoa is a common method in all browsers, in the DOM, to base64 a string on the fly.

Obfuscation can also include if you don't explain what the script is doing. i.e. throwing ads on unsuspecting users. Tell everyone on your script description here on OUJS or you can get the axe as well. Not everyone knows every aspect of JavaScript so it's best to put a clear description both in the script and its relevant "Script Info".

Use your best judgement. As it stands now with 0.1.5+ba9dba3 of your script I don't see any immediate issue flags at this time.

OUJS Admin

Try using for the latest gist instead of fixing it on an old static hash found in 0.1.0+be178af.


With your code at version 0.1.0+f41d13f

// @downloadURL

which currently contains:

    "ytd-search-block-list": [
        "bbc news中文",
        "wen zhao",

When your user script engine updates the script, the script source will be obliterated/overwritten and you'll be trying to inject an object of data instead of the script published here which will usually cause an error in the console.

Is this what you really want to do?


Re: @mattjgalloway:

thinking that was the right thing to do - apologies I didn’t know about the forking on here


" allows all published works on to be forked via forking capabilities." from the current TOS

Any ideas what’s up here and how I can get this forked properly?

Fork it on OUJS first... that builds the linkage... since you clearly didn't read but acknowledged that you did the script under it's current name is forever removed on your account. You may change the @name and try again. Normally this wouldn't be required but you did violate the TOS.

Again if it happens again, from anyone, my patience is at minimum for this since it's quite clear not to do improper forking. Technically you stole the script by not forking it properly... that alone is reason for account removal... but luckily the minuscule patience left afforded you some leeway (which isn't required).

OUJS Admin.

Improper forking means a TOS violation. Reread it again. Any further violations may end up being account removal.

OUJS Admin

Re: @magnushakansson:

Whenever you see #bypass=true that usually means you don't have Tampermonkey (TM) installed/enabled/working (or Violentmonkey (VM)) in Chromium based browsers such as Chrome.

Please check your browser to make sure a .user.js engine is installed, enabled, etc. If it still doesn't work try another clean profile with a new installation of your preferred .user.js engine manager.

Currently installs for me.

OUJS Admin

Re: @freeos:

Taking the less subtle approach, unlike jscher2000's gently mentioned open advice, to prevent blatant misinformation:

GM_config lacks the following features, a regular user might want:

  • Ability to open and change the options without reloading the page.

This is absolutely incorrect. You have clearly ignored bothering to check out how to use GM_config with the .open command.

GM_config lacks the following features, a regular user might want:

  • Do not show the options every time when the page is loaded (refreshed), only when the user explicitly decides to.

Again incomplete research on your part with poor assumptions on the GM_config Unit Test.

The wiki is referenced on the library homepage and should have been your first visit before assuming incorrectly.

Please try, try again.