added script-loading extension primitive

snap7
jmoenig 2021-06-22 14:09:35 +02:00
rodzic 0decdec455
commit 9515082721
3 zmienionych plików z 40 dodań i 4 usunięć

Wyświetl plik

@ -9,7 +9,10 @@
* **Notable Fixes:** * **Notable Fixes:**
* fixed occasional invisible error messages * fixed occasional invisible error messages
### 2021-06-19 ### 2021-06-22
* extensions: added script-loading extension primitive
### 2021-06-20
* updated extensions documentation * updated extensions documentation
### 2021-06-19 ### 2021-06-19

Wyświetl plik

@ -19,7 +19,7 @@
<script src="src/sketch.js?version=2020-07-13"></script> <script src="src/sketch.js?version=2020-07-13"></script>
<script src="src/video.js?version=2019-06-27"></script> <script src="src/video.js?version=2019-06-27"></script>
<script src="src/maps.js?version=2021-06-15"></script> <script src="src/maps.js?version=2021-06-15"></script>
<script src="src/extensions.js?version=2021-06-20"></script> <script src="src/extensions.js?version=2021-06-22"></script>
<script src="src/xml.js?version=2020-04-27"></script> <script src="src/xml.js?version=2020-04-27"></script>
<script src="src/store.js?version=2021-06-10"></script> <script src="src/store.js?version=2021-06-10"></script>
<script src="src/locale.js?version=2021-06-11"></script> <script src="src/locale.js?version=2021-06-11"></script>

Wyświetl plik

@ -31,13 +31,14 @@
IDE_Morph, CamSnapshotDialogMorph, SoundRecorderDialogMorph, isSnapObject, nop, IDE_Morph, CamSnapshotDialogMorph, SoundRecorderDialogMorph, isSnapObject, nop,
Color, contains*/ Color, contains*/
modules.extensions = '2021-June-20'; modules.extensions = '2021-June-22';
// Global stuff // Global stuff
var SnapExtensions = { var SnapExtensions = {
primitives: new Map(), primitives: new Map(),
menus: new Map() menus: new Map(),
scripts: []
}; };
/* /*
@ -108,6 +109,8 @@ var SnapExtensions = {
Whatever you do, please use these extension capabilities sensibly. Whatever you do, please use these extension capabilities sensibly.
*/ */
// Primitives
// errors & exceptions (err_): // errors & exceptions (err_):
SnapExtensions.primitives.set( SnapExtensions.primitives.set(
@ -674,6 +677,17 @@ SnapExtensions.primitives.set(
} }
); );
// loading external scripts (scr_)
SnapExtensions.primitives.set(
'scr_load(url)',
function (url) {
return SnapExtensions.loadScript(url);
}
);
// Menus
SnapExtensions.menus.set( SnapExtensions.menus.set(
'clr_numbers', // Brian's browns and oranges, sigh... 'clr_numbers', // Brian's browns and oranges, sigh...
function () { function () {
@ -900,3 +914,22 @@ SnapExtensions.menus.set(
} }
} }
); );
// Scripts
SnapExtensions.loadScript = function (url) {
var scriptElement,
isLoaded = false;
if (contains(this.scripts, url)) {
return () => true;
}
scriptElement = document.createElement('script');
scriptElement.onload = () => {
this.scripts.push(url);
isLoaded = true;
};
document.head.appendChild(scriptElement);
scriptElement.src = url;
return () => isLoaded;
};