Comment utiliser navigator au lieu de window.WEBKITSTORAGEINFO HTML5 File-system API?
il y a Donc un poste similaire trouvé ici html-5-système de fichiers-accès-type de l'erreur . Cependant, je ne suis pas très satisfait de la conclusion parce que je ne pense pas qu'il a réellement répondu à la question - la solution donnée est la solution de code dépréciée. Est-ce que quelqu'un sait utiliser navigator
au lieu de window
comme la console Chrome l'indique?
j'ai utilisé les suivants et cela fonctionne, mais la console chrome garde m'informant de ne pas le faire, car il est obsolète.
"1519170920 De Travail" Obsolète "Code De L'1519180920"
window.webkitStorageInfo.requestQuota(PERSISTENT, 1024*1024*280, function(grantedBytes) {
window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
}, function(e) {
console.log('Error', e);
});
Note: onInitFs
et errorHandler
sont deux fonctions définies ailleurs, qui fonctionnent.
Journal de la Console - le message que je reçois dans la console est le suivant:
'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage'
or 'navigator.webkitPersistentStorage' instead.
donc la meilleure pratique serait d'arrêter en utilisant la méthode dépréciée. Malheureusement, quand je remplace window
par navigator
il se brise (voir ci-dessous). Comment utiliser navigator
au lieu de window
pour accéder au système de fichier?
3 réponses
ci-dessous deux exemples avec L'API current .
il utilise navigator.webkitPersistentStorage.requestQuota
au lieu de l'déprécié window.webkitStorageInfo.queryUsageAndQuota
:
navigator.webkitTemporaryStorage.queryUsageAndQuota (
function(usedBytes, grantedBytes) {
console.log('we are using ', usedBytes, ' of ', grantedBytes, 'bytes');
},
function(e) { console.log('Error', e); }
);
Demande De Quota
var requestedBytes = 1024*1024*280;
navigator.webkitPersistentStorage.requestQuota (
requestedBytes, function(grantedBytes) {
console.log('we were granted ', grantedBytes, 'bytes');
}, function(e) { console.log('Error', e); }
);
vous devez choisir soit temporaire ( webkitTemporaryStorage
) ou persistante ( webkitPersistentStorage
) stockage pour interrogation.
L'implémentation actuelle de Chrome suit cette version spec spécifique, qui décrit un peu plus les choses: http://www.w3.org/TR/2012/WD-quota-api-20120703 /
chromestore.js fournit une API plus facile pour ces données.
pour répondre à votre question originale, votre nouveau code ressemblerait à ceci:
demande de quota et initialise le système de fichiers
var requestedBytes = 1024*1024*280;
navigator.webkitPersistentStorage.requestQuota (
requestedBytes, function(grantedBytes) {
window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler);
}, function(e) { console.log('Error', e); }
);
Le message d'erreur indique d'utiliser navigator.webkitTemporaryStorage
ou navigator.webkitPersistentStorage
et vous essayez d'utiliser navigator.webkitStorageInfo
, qui est undefined
.
mise à jour:
PERSISTENT ne doit pas être passé à navigator.webkitTemporaryStorage
ou navigator.webkitPersistentStorage
mais seulement à window.webkitRequestFileSystem
. Ensuite, il n'y a plus d'erreur. (voir: API de système de fichiers ne fonctionnant pas dans Chrome v27 & v29 )
récemment, j'ai passé un certain temps à créer une couche d'abstraction pour L'API du système de fichiers avec un stockage persistant appelé Chromestore.js. J'ai corrigé cette erreur dans la couche d'abstraction en utilisant la même solution parlé ici. Mais avec cette API, il n'y a pas besoin de s'inquiéter et c'est propre.
https://github.com/summera/chromestore.js
il fournit certaines fonctionnalités supplémentaires qui est assez pratique comme bien. Il faut absolument qu'elle soit étoffée, ce que j'ai l'intention de faire bientôt. Toutes les suggestions/commentaires sont très appréciés! Cela devrait faciliter la tâche aux utilisateurs de l'API du système de fichiers. Surtout pour ceux qui essaient de stocker de grandes quantités de données extraites de serveurs distants.
exemples et documentation sont ici: https://github.com/summera/chromestore.js/blob/master/chromestore-api.md
je pense que cela a le possibilité d'être élargi et de faire des choses vraiment soignées avec les données et L'API du système de fichiers.
santé!