Fix: don't load script async

This commit is contained in:
eight 2018-10-14 22:46:54 +08:00
parent 715d8e8d15
commit 89f836c003
3 changed files with 73 additions and 85 deletions

View File

@ -157,16 +157,16 @@
<script src="manage/sort.js"></script> <script src="manage/sort.js"></script>
<script src="manage/manage.js"></script> <script src="manage/manage.js"></script>
<script src="vendor-overwrites/colorpicker/colorconverter.js" async></script> <script src="vendor-overwrites/colorpicker/colorconverter.js"></script>
<script src="vendor-overwrites/colorpicker/colorpicker.js" async></script> <script src="vendor-overwrites/colorpicker/colorpicker.js"></script>
<script src="manage/config-dialog.js" async></script> <script src="manage/config-dialog.js"></script>
<script src="manage/updater-ui.js" async></script> <script src="manage/updater-ui.js"></script>
<script src="manage/object-diff.js" async></script> <script src="manage/object-diff.js"></script>
<script src="manage/import-export.js" async></script> <script src="manage/import-export.js"></script>
<script src="manage/incremental-search.js" async></script> <script src="manage/incremental-search.js"></script>
<script src="msgbox/msgbox.js" async></script> <script src="msgbox/msgbox.js"></script>
<script src="js/sections-util.js" async></script> <script src="js/sections-util.js"></script>
<script src="js/storage-util.js" async></script> <script src="js/storage-util.js"></script>
</head> </head>
<body id="stylus-manage" i18n-dragndrop-hint="dragDropMessage"> <body id="stylus-manage" i18n-dragndrop-hint="dragDropMessage">

View File

@ -1,10 +1,55 @@
/* global messageBox styleSectionsEqual getOwnTab API /* global messageBox styleSectionsEqual getOwnTab API onDOMready
tryJSONparse scrollElementIntoView $ $$ API $create t animateElement */ tryJSONparse scrollElementIntoView $ $$ API $create t animateElement */
'use strict'; 'use strict';
const STYLISH_DUMP_FILE_EXT = '.txt'; const STYLISH_DUMP_FILE_EXT = '.txt';
const STYLUS_BACKUP_FILE_EXT = '.json'; const STYLUS_BACKUP_FILE_EXT = '.json';
onDOMready().then(() => {
$('#file-all-styles').onclick = exportToFile;
$('#unfile-all-styles').onclick = () => {
importFromFile({fileTypeFilter: STYLUS_BACKUP_FILE_EXT});
};
Object.assign(document.body, {
ondragover(event) {
const hasFiles = event.dataTransfer.types.includes('Files');
event.dataTransfer.dropEffect = hasFiles || event.target.type === 'search' ? 'copy' : 'none';
this.classList.toggle('dropzone', hasFiles);
if (hasFiles) {
event.preventDefault();
clearTimeout(this.fadeoutTimer);
this.classList.remove('fadeout');
}
},
ondragend() {
animateElement(this, {className: 'fadeout', removeExtraClasses: ['dropzone']}).then(() => {
this.style.animationDuration = '';
});
},
ondragleave(event) {
try {
// in Firefox event.target could be XUL browser and hence there is no permission to access it
if (event.target === this) {
this.ondragend();
}
} catch (e) {
this.ondragend();
}
},
ondrop(event) {
this.ondragend();
if (event.dataTransfer.files.length) {
event.preventDefault();
if ($('#only-updates input').checked) {
$('#only-updates input').click();
}
importFromFile({file: event.dataTransfer.files[0]});
}
},
});
});
function importFromFile({fileTypeFilter, file} = {}) { function importFromFile({fileTypeFilter, file} = {}) {
return new Promise(resolve => { return new Promise(resolve => {
const fileInput = document.createElement('input'); const fileInput = document.createElement('input');
@ -244,7 +289,7 @@ function importFromString(jsonString) {
} }
$('#file-all-styles').onclick = () => { function exportToFile() {
API.getAllStyles().then(styles => { API.getAllStyles().then(styles => {
// https://crbug.com/714373 // https://crbug.com/714373
document.documentElement.appendChild( document.documentElement.appendChild(
@ -284,47 +329,4 @@ $('#file-all-styles').onclick = () => {
const yyyy = today.getFullYear(); const yyyy = today.getFullYear();
return `stylus-${yyyy}-${mm}-${dd}${STYLUS_BACKUP_FILE_EXT}`; return `stylus-${yyyy}-${mm}-${dd}${STYLUS_BACKUP_FILE_EXT}`;
} }
}; }
$('#unfile-all-styles').onclick = () => {
importFromFile({fileTypeFilter: STYLUS_BACKUP_FILE_EXT});
};
Object.assign(document.body, {
ondragover(event) {
const hasFiles = event.dataTransfer.types.includes('Files');
event.dataTransfer.dropEffect = hasFiles || event.target.type === 'search' ? 'copy' : 'none';
this.classList.toggle('dropzone', hasFiles);
if (hasFiles) {
event.preventDefault();
clearTimeout(this.fadeoutTimer);
this.classList.remove('fadeout');
}
},
ondragend() {
animateElement(this, {className: 'fadeout', removeExtraClasses: ['dropzone']}).then(() => {
this.style.animationDuration = '';
});
},
ondragleave(event) {
try {
// in Firefox event.target could be XUL browser and hence there is no permission to access it
if (event.target === this) {
this.ondragend();
}
} catch (e) {
this.ondragend();
}
},
ondrop(event) {
this.ondragend();
if (event.dataTransfer.files.length) {
event.preventDefault();
if ($('#only-updates input').checked) {
$('#only-updates input').click();
}
importFromFile({file: event.dataTransfer.files[0]});
}
},
});

View File

@ -26,7 +26,6 @@ const newUI = {
}, },
}; };
newUI.renderClass(); newUI.renderClass();
requestAnimationFrame(usePrefsDuringPageLoad);
const TARGET_TYPES = ['domains', 'urls', 'urlPrefixes', 'regexps']; const TARGET_TYPES = ['domains', 'urls', 'urlPrefixes', 'regexps'];
const GET_FAVICON_URL = 'https://www.google.com/s2/favicons?domain='; const GET_FAVICON_URL = 'https://www.google.com/s2/favicons?domain=';
@ -37,7 +36,21 @@ const handleEvent = {};
Promise.all([ Promise.all([
API.getAllStyles(true), API.getAllStyles(true),
urlFilterParam && API.searchDB({query: 'url:' + urlFilterParam}), urlFilterParam && API.searchDB({query: 'url:' + urlFilterParam}),
onDOMready().then(initGlobalEvents), Promise.all([
onDOMready(),
prefs.initializing,
])
.then(() => {
initGlobalEvents();
if (!VIVALDI) {
$$('#header select').forEach(el => el.adjustWidth());
}
if (FIREFOX && 'update' in (chrome.commands || {})) {
const btn = $('#manage-shortcuts-button');
btn.classList.remove('chromium-only');
btn.onclick = API.optionsCustomizeHotkeys;
}
}),
]).then(args => { ]).then(args => {
showStyles(...args); showStyles(...args);
}); });
@ -682,30 +695,3 @@ function highlightEditedStyle() {
requestAnimationFrame(() => scrollElementIntoView(entry)); requestAnimationFrame(() => scrollElementIntoView(entry));
} }
} }
function usePrefsDuringPageLoad() {
for (const id of Object.getOwnPropertyNames(prefs.defaults)) {
const value = prefs.get(id);
if (value !== true) continue;
const el = document.getElementById(id) ||
id.includes('expanded') && $(`details[data-pref="${id}"]`);
if (!el) continue;
if (el.type === 'checkbox') {
el.checked = value;
} else if (el.localName === 'details') {
el.open = value;
} else {
el.value = value;
}
}
if (!VIVALDI) {
$$('#header select').forEach(el => el.adjustWidth());
}
if (FIREFOX && 'update' in (chrome.commands || {})) {
const btn = $('#manage-shortcuts-button');
btn.classList.remove('chromium-only');
btn.onclick = API.optionsCustomizeHotkeys;
}
}