User talk:SD0001/Making user scripts load faster
Further issue with spihelper
editThis script seemingly does not work with spihelper again. It worked for a bit, but now does not work again. The error from the console is "Uncaught (in promise) ReferenceError: displayMessage is not defined". This seemingly seems to be the script not working well with importing scripts from cached scripts. The displayMessage function is in a imported javascript file in spihelper. When adding "?nocache=yes" to the URL it does not cause the error. I also manually called "displayMessage" with and without the cache and confirmed that with cache the javascript console does not have the function defined. However, the network tab shows that regardless of cache being enabled or not enabled the displayMessage javascript file is still downloaded or has loaded the cached result (and using the api method if caching is enabled). I'm using Firefox. Dreamy Jazz talk to me | my contributions 22:07, 3 June 2021 (UTC)
- @Dreamy Jazz Thanks for the note. Just seeing this now. Should be fixed. I replaced use of
eval
with inserting a<script>
tag, which seems to make the behaviour more like the uncached method.Going by the book, if User:Timotheus Canens/displaymessage.js wantsdisplayMessage
to be globally exposed, it should really be doingwindow.displayMessage = function() {...}
. I'm surprised that it even works. – SD0001 (talk) 16:55, 13 June 2021 (UTC)
Conflict with scriptManager
edit@SD0001: I think this has a conflict with scriptManager, meaning it ignores scriptManager-installed scripts. Also, the text to be copied and pasted could be replaced with {{subst:User:SD0001/userscript-load-caching.min.js}}
and {{subst:User:SD0001/userscript-load-caching.js}}
, respectively. ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use {{reply to|Qwerfjkl}}
on reply) 13:56, 13 June 2021 (UTC)
- @Qwerfjkl I made some changes per the above section. Could you check again? Looking at scriptManager's source code, I can't think of a reason why the two would conflict. Also, does it now work with RedWarn? – SD0001 (talk) 11:55, 15 June 2021 (UTC)
- @SD0001
We now just need Ed6767 to apply the changes to User:RedWarn/.js
. ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use{{reply to|Qwerfjkl}}
on reply) 15:55, 15 June 2021 (UTC)- @SD0001 With scriptManager enbled I get this error:
- mdlLogic.js:1 Uncaught URIError: URI malformed
- at decodeURIComponent (<anonymous>)
- at Function.t.EPPyTH (mdlLogic.js:1)
- at t (mdlLogic.js:1)
- at Object.mw.loader.load (<anonymous>:3:767)
- at HTMLAnchorElement.loadScript (index.php?action=raw&ctype=text/javascript&title=User%3AMusikAnimal%2FscriptManager.js:15)
- at HTMLAnchorElement.dispatch (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:70)
- at HTMLAnchorElement.elemData.handle (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:66) ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
{{reply to|Qwerfjkl}}
on reply) 15:59, 15 June 2021 (UTC)
- @SD0001
- @Qwerfjkl I just tested with both (scriptManager & RedWarn) and they all work fine for me now. The changes to User:RedWarn/.js are already applied.
As to why it isn't working for you, it might be because of complications in your common.js. You can remove thoseif (scriptManager == ...)
conditions now as scriptManager and script caching wouldn't conflict. Also, avoid redefining importScript (lines 4-6) as the script caching code does this internally. – SD0001 (talk) 16:38, 15 June 2021 (UTC)- @SD0001 I think I've removed all of the unecessary code (messily). ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
{{reply to|Qwerfjkl}}
on reply) 16:55, 15 June 2021 (UTC) - @SD0001 I now get (which I think stopped me from saving an edit):
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 Uncaught TypeError: Cannot read property 'end' of null
- at jQuery.fn.init.getCaretPosition (<anonymous>:137:580)
- at jQuery.fn.init.$.fn.textSelection (<anonymous>:205:237)
- at jQuery.fn.init.$.fn.wikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:11)
- at Object.mw.addWikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
- at HTMLDocument.<anonymous> (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
- at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
- at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
- mdlLogic.js:1 Uncaught URIError: URI malformed
- at decodeURIComponent (<anonymous>)
- at Function.t.EPPyTH (mdlLogic.js:1)
- at t (mdlLogic.js:1)
- at Object.mw.loader.load (<anonymous>:2:180)
- at Object.preloadDeflate (<anonymous>:155:854)
- at <anonymous>:462:348 ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
{{reply to|Qwerfjkl}}
on reply) 16:59, 15 June 2021 (UTC) - My eror console in full:
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:145 JQMIGRATE: Migrate is installed with logging active, version 3.3.2
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:339 This page is using the deprecated ResourceLoader module "jquery.ui".
- Please use OOUI instead.
- mw.loader.implement.css @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:339
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.isFunction is deprecated
- migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.fn.delegate is deprecated
- migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.type is deprecated
- migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
- 2VM1905:661 Use of "importScriptURI" is deprecated. Use mw.loader instead.
- maybeLog @ VM1905:661
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: Cannot read property 'indexOf' of undefined TypeError: Cannot read property 'indexOf' of undefined
- at Array.<anonymous> (<anonymous>:760:12)
- at Object.ARA_Functions.getSuggestions (<anonymous>:380:24)
- at Object.ARA_Functions.scan (<anonymous>:299:45)
- at HTMLDocument.<anonymous> (<anonymous>:22:16)
- at mightThrow (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:49:833)
- at process (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
- jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 Uncaught TypeError: Cannot read property 'indexOf' of undefined
- at Array.<anonymous> (<anonymous>:760:12)
- at Object.ARA_Functions.getSuggestions (<anonymous>:380:24)
- at Object.ARA_Functions.scan (<anonymous>:299:45)
- at HTMLDocument.<anonymous> (<anonymous>:22:16)
- at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
- at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
- VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- 2VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- 2VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regexTool" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regsearch" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-regex" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setreason" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-setoptions" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-doaction" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-custom" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-customaddnew" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1905:661 Use of "userscript-regexframework-rfmenu" is deprecated. Use m:TemplateScript instead.
- maybeLog @ VM1905:661
- VM1853:305 RedWarn 16.1 - (c) 2021 RedWarn Contributors
- 2mdlLogic.js:1 Uncaught URIError: URI malformed
- at decodeURIComponent (<anonymous>)
- at Function.t.EPPyTH (mdlLogic.js:1)
- at t (mdlLogic.js:1)
- at Object.mw.loader.load (<anonymous>:2:180)
- at <anonymous>:6:11
- at Object.<anonymous> (<anonymous>:1:724)
- at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
- at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
- VM1914:2 This page is using the deprecated ResourceLoader module "jquery.throttle-debounce".
- Please use OO.ui.throttle/debounce instead. See https://phabricator.wikimedia.org/T213426
- (anonymous) @ VM1914:2
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: URI malformed URIError: URI malformed
- at decodeURIComponent (<anonymous>)
- at Function.t.EPPyTH (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:2695)
- at t (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:3719)
- at Object.mw.loader.load (<anonymous>:2:180)
- at Array.<anonymous> (<anonymous>:38:12)
- at mightThrow (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:49:833)
- at process (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
- jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.trim is deprecated; use String.prototype.trim
- migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: Cannot read property 'end' of null TypeError: Cannot read property 'end' of null
- at jQuery.fn.init.getCaretPosition (<anonymous>:137:580)
- at jQuery.fn.init.$.fn.textSelection (<anonymous>:205:237)
- at jQuery.fn.init.$.fn.wikiEditor (https://en.wiki.x.io/w/load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:11:344)
- at Object.mw.addWikiEditor (https://en.wiki.x.io/w/load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5:620)
- at HTMLDocument.<anonymous> (https://en.wiki.x.io/w/load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5:527)
- at mightThrow (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:49:833)
- at process (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
- jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146 JQMIGRATE: jQuery.fn.unbind is deprecated
- migrateWarn @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:146
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 Uncaught TypeError: Cannot read property 'end' of null
- at jQuery.fn.init.getCaretPosition (<anonymous>:137:580)
- at jQuery.fn.init.$.fn.textSelection (<anonymous>:205:237)
- at jQuery.fn.init.$.fn.wikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:11)
- at Object.mw.addWikiEditor (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
- at HTMLDocument.<anonymous> (load.php?lang=en&modules=ext.wikiEditor&skin=vector&version=1lviy:5)
- at mightThrow (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:49)
- at process (load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:50)
- mdlLogic.js:1 Uncaught URIError: URI malformed
- at decodeURIComponent (<anonymous>)
- at Function.t.EPPyTH (mdlLogic.js:1)
- at t (mdlLogic.js:1)
- at Object.mw.loader.load (<anonymous>:2:180)
- at Object.preloadDeflate (<anonymous>:155:854)
- at <anonymous>:462:348
- load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52 jQuery.Deferred exception: URI malformed URIError: URI malformed
- at decodeURIComponent (<anonymous>)
- at Function.t.EPPyTH (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:2695)
- at t (https://redwarn.toolforge.org/cdn/js/mdlLogic.js:1:3719)
- at Object.mw.loader.load (<anonymous>:2:180)
- at VeInitMwDesktopArticleTarget.ve.init.mw.DesktopArticleTarget.saveComplete (<anonymous>:18:677)
- at fire (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:46:897)
- at fireWith (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:48:96)
- at mightThrow (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:441)
- at process (https://en.wiki.x.io/w/load.php?lang=en&modules=jquery%2Coojs-ui-core%7Cjquery.ui&skin=vector&version=1a0i7:50:498) undefined
- jQuery.Deferred.exceptionHook @ load.php?lang=en&modules=jquery%2Coojs-ui-core|jquery.ui&skin=vector&version=1a0i7:52
- DevTools failed to load source map: Could not load content for https://redwarn.toolforge.org/cdn/css/jquery.contextMenu.min.css.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
- DevTools failed to load source map: Could not load content for https://redwarn.toolforge.org/cdn/js/jquery.contextMenu.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
- DevTools failed to load source map: Could not load content for https://redwarn.toolforge.org/cdn/js/material.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
{{reply to|Qwerfjkl}}
on reply) 17:02, 15 June 2021 (UTC) - @SD0001 For both of these revisions of my common.js page, I cannot edit: [1] [2] ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
{{reply to|Qwerfjkl}}
on reply) 17:15, 15 June 2021 (UTC)- That's strange. I have the copy of [3] in my common.js right now, but I am able to edit. It's very rare for user script issues to interfere with editing ability. – SD0001 (talk) 17:20, 15 June 2021 (UTC)
- @Qwerfjkl: Do you also have browser extensions enabled? That might be making the difference. From the stack trace you posted, it seems to me most of those errors are coming from RedWarn. Try disabling RedWarn. If all else fails, I'd suggest deleting everything from common.js and then going on adding the scripts you use one by one until the issue comes up again. – SD0001 (talk) 17:25, 15 June 2021 (UTC)
- @SD0001 RedWarn seems to be the problem. I'll post a notice there. ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
{{reply to|Qwerfjkl}}
on reply) 17:42, 15 June 2021 (UTC)
- @SD0001 RedWarn seems to be the problem. I'll post a notice there. ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
- @Qwerfjkl: Do you also have browser extensions enabled? That might be making the difference. From the stack trace you posted, it seems to me most of those errors are coming from RedWarn. Try disabling RedWarn. If all else fails, I'd suggest deleting everything from common.js and then going on adding the scripts you use one by one until the issue comes up again. – SD0001 (talk) 17:25, 15 June 2021 (UTC)
- That's strange. I have the copy of [3] in my common.js right now, but I am able to edit. It's very rare for user script issues to interfere with editing ability. – SD0001 (talk) 17:20, 15 June 2021 (UTC)
- @SD0001 I think I've removed all of the unecessary code (messily). ― Qwerfjkl | 𝕋𝔸𝕃𝕂 (please use
- This editing deficiency was a problem relating to the 2017 WikiText editor. ―Qwerfjkltalk 07:57, 22 July 2021 (UTC)
Mobile?
edit@SD0001, Does this allow importScript
s to load on mobile? I suspect it does, just curious. — Qwerfjkltalk 20:09, 22 September 2022 (UTC)
- @Qwerfjkl
importScript
already works on mobile since this month or last month. Before that, yes this script enabled it to work on mobile. – SD0001 (talk) 06:07, 23 September 2022 (UTC)
Change please
edit@SD0001: I use your loader code to good effect, but was unable to fully load AutoEd. I cloned your code to find out why. I then made a couple of changes and now AutoEd loads and works correctly:
- Contentmodel — your code confirms that the target page is indeed JavaScript. However, the AutoEd module pages are currently set as
wikitext
and so are rejected. - Namespace — your code checks the target namespace for
user
orMediaWiki
. However, AutoEd is in theWikipedia
namespace.
The first is not an issue with the loader — JavaScript should identify as JavaScript. I have asked that the module pages be changed.
However, please could you update the code to also allow the Wikipedia
namespace. — GhostInTheMachine talk to me 12:14, 25 January 2024 (UTC)
- I've fixed the content model issue. On the namespace issue, what standard importScript does is to also allow fully-protected pages (regardless of namespace) in addition to MediaWiki namespace pages and user JS pages. Personally I don't think any restriction is needed at all - the purpose of the rule (which only dates to 2018) is to keep inexperienced people from shooting themselves in the foot and anyone using this script is familiar enough with user scripts to not do that. * Pppery * it has begun... 20:45, 25 January 2024 (UTC)
- Fair enough. I think that the contentmodel check is the important one. Importing something and treating it as JavaScript means we would really like it to be JavaScript. (Not an absolute test, I know.) Where the JS came from is probably less important, since we did ask for it to be loaded. Presumably, each JS "consumer" is going to check where it does come from! We are therefore outsourcing trust to specific users for subsequent changes to their user scripts or to the overall "system" for any published utilities or gadgets. I am fairly happy about that, as user (JS) sub-pages are protected from edits by other "normal" users (WP:UPPROT).@SD0001: Any thoughts on removing the namespace test? — GhostInTheMachine talk to me 13:59, 28 January 2024 (UTC)
- MediaWiki doesn't check the content model at all for non-userspace pages. So I suppose us checking the content model is a sufficient (and better) security measure. Makes sense to remove the namespace check. – SD0001 (talk) 16:58, 28 January 2024 (UTC)
- Done – SD0001 (talk) 17:23, 28 January 2024 (UTC)
- Many thanks. All is well — GhostInTheMachine talk to me 11:17, 29 January 2024 (UTC)
- Done – SD0001 (talk) 17:23, 28 January 2024 (UTC)
- MediaWiki doesn't check the content model at all for non-userspace pages. So I suppose us checking the content model is a sufficient (and better) security measure. Makes sense to remove the namespace check. – SD0001 (talk) 16:58, 28 January 2024 (UTC)
- Fair enough. I think that the contentmodel check is the important one. Importing something and treating it as JavaScript means we would really like it to be JavaScript. (Not an absolute test, I know.) Where the JS came from is probably less important, since we did ask for it to be loaded. Presumably, each JS "consumer" is going to check where it does come from! We are therefore outsourcing trust to specific users for subsequent changes to their user scripts or to the overall "system" for any published utilities or gadgets. I am fairly happy about that, as user (JS) sub-pages are protected from edits by other "normal" users (WP:UPPROT).@SD0001: Any thoughts on removing the namespace test? — GhostInTheMachine talk to me 13:59, 28 January 2024 (UTC)
mw.Api()?
editWould it be faster to use wmdoc:mediawiki-core/master/js/mw.Api.html and ES6 promises instead of jQuery stuff? Aaron Liu (talk) 19:33, 25 January 2024 (UTC)
- Not only do you have to wait for the module to load to use mw.Api, it is a wrapper for $.ajax. Fetch API is the modern way but there's usually little to no performance difference. Nardog (talk) 10:54, 27 January 2024 (UTC)
- As Nardog implies, the reason for not depending on mediawiki.api or other dependencies is because any importScript calls that occur while we wait for dependencies to load wouldn't benefit from caching. Even if mw.Api is already loaded when common.js loads, there is still no guarantee that the snippet executes before the importScript calls down the page, because of the mw.loader.using callback being async. This is also the reason the script urls are parsed with regex instead of mw.Uri. – SD0001 (talk) 17:44, 28 January 2024 (UTC)
Safari
editWith the code running on Safari, I get the following errors, though everything else seems to be fine:
[Error] SyntaxError: Unexpected EOF
(anonymous function) (Script Element 2:1:848)
mightThrow (load.php:45:654)
(anonymous function) (load.php:46:320)
[Error] SyntaxError: Unexpected end of script
(anonymous function) (Script Element 2:1:848)
mightThrow (load.php:45:654)
(anonymous function) (load.php:46:320)'
[Error] SyntaxError: Unexpected EOF
(anonymous function) (Script Element 2:1:848)
mightThrow (load.php:45:654)
(anonymous function) (load.php:46:320)
[Error] SyntaxError: Unexpected end of script
(anonymous function) (Script Element 2:1:848)
mightThrow (load.php:45:654)
(anonymous function) (load.php:46:320)
Rusty Cat (talk) 18:47, 21 July 2024 (UTC)
- Rusty Cat, does the non minified version work? — Qwerfjkltalk 09:08, 22 July 2024 (UTC)
- Nope, the errors still happen. I don't usually use Safari as my main browser but I just wanted to make sure that this is accessible to various browsers. Rusty 🐈 00:07, 27 July 2024 (UTC)