2010-06-25 14 views
1

Je jouais à essayer de créer une petite extension de safari, la plupart pour le plaisir et pour voir ce que vous pouviez faire, etc.Comment créer une base de données JavaScript locale liée à une extension Safari-5?

De toute façon, je pensais stocker des données pour mon extension dans une base de données locale, donc Je l'aurais toujours là où j'en avais besoin, à travers les pages chargées.

J'ai cherché un peu sur google et trouvé cet extrait de la bibliothèque de référence Safari, qui va créer une base de données JavaScript:

var shortName = 'mydatabase'; 
var version = '1.0'; 
var displayName = 'My Important Database'; 
var maxSize = 65536; // in bytes 
var db = openDatabase(shortName, version, displayName, maxSize); 

Cela fonctionne assez bien et crée la base de données comme je voulais. La seule chose est, que cette base de données est spécifique au domaine, donc mon script créant la base de données créera une base de données pour chaque domaine visité, ce qui n'était pas exactement ce que je voulais.

Alors, comment pouvez-vous, si possible, créer une base de données de stockage locale, qui peut être affectée à une extension safari, de sorte qu'elle sera disponible sur tous les domaines?

Répondre

2

La méthode correcte serait de le faire à partir de la page globale au lieu d'un script injecté. Le problème est que ça ne marchera pas.

La création d'une base de données hors ligne à partir d'une page globale déclenche un SECURITY_ERR. C'est un bug connu, et il devrait être corrigé dans la prochaine version.

Donc, maintenant, il n'y a aucun moyen de le faire. Comme Brian le fait remarquer, ce problème est résolu depuis Safari 5.0.3. Vous devez spécifier un quota de taille de base de données dans le générateur Extension, puis cela devrait fonctionner.

+0

C'est dommage, je suppose que je vais devoir me préparer. – googletorp

+0

@googletorp: Oui, c'est vraiment dommage. :/ – zneak

+0

Cela devrait être corrigé dans la dernière version de Safari. Êtes-vous toujours en train de voir un SECURITY_ERR lorsque vous essayez Safari 5.0.3? – Brian