您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
IndexedDB interface for WMEPIE Photo Viewer tool
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greatest.deepsurf.us/scripts/375202/650818/Photo%20Viewer%20DB%20Interface.js
您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
- // ==UserScript==
- // @name Photo Viewer DB Interface
- // @namespace https://greatest.deepsurf.us/en/users/166843-wazedev
- // @version 2018.12.04.01
- // @description IndexedDB interface for WMEPIE Photo Viewer tool
- // @author WazeDev
- // @include /^https:\/\/(www|beta)\.waze\.com\/(?!user\/)(.{2,6}\/)?editor\/?.*$/
- // @license GNU GPLv3
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- var pvdb;
- function getDB() {
- if (!pvdb) {
- pvdb= new Promise(function(resolve, reject) {
- var openreq = indexedDB.open('WMEPIEPhotoViewer', 1);
- openreq.onerror = function() {
- reject(openreq.error);
- };
- openreq.onupgradeneeded = function() {
- // First time setup: create an empty object store
- //openreq.result.createObjectStore(dbName, { keyPath: "placeID" });
- if(!openreq.result.objectStoreNames.contains("Places")) {
- openreq.result.createObjectStore("Places", { keyPath: "placeID" });
- }
- };
- openreq.onsuccess = function() {
- resolve(openreq.result);
- };
- });
- }
- return pvdb;
- }
- function withStore(storeName, type, callback) {
- return getDB().then(function(pvdb) {
- return new Promise(function(resolve, reject) {
- var transaction = pvdb.transaction(storeName, type);
- transaction.oncomplete = function() {
- resolve();
- };
- transaction.onerror = function() {
- reject(transaction.error);
- };
- callback(transaction.objectStore(storeName));
- });
- });
- }
- var idbKeyval = {
- get: function(storeName, key) {
- var req;
- return withStore(storeName, 'readonly', function(store) {
- req = store.get(key);
- }).then(function() {
- return req.result;
- });
- },
- set: function(storeName, value) {
- return withStore(storeName, 'readwrite', function(store) {
- store.put(value);
- });
- },
- delete: function(storeName, key) {
- return withStore(storeName, 'readwrite', function(store) {
- store.delete(key);
- });
- },
- clear: function(storeName) {
- return withStore(storeName, 'readwrite', function(store) {
- store.clear();
- });
- },
- keys: function(storeName) {
- var keys = [];
- return withStore(storeName, 'readonly', function(store) {
- // This would be store.getAllKeys(), but it isn't supported by Edge or Safari.
- // And openKeyCursor isn't supported by Safari.
- (store.openKeyCursor || store.openCursor).call(store).onsuccess = function() {
- if (!this.result) return;
- keys.push(this.result.key);
- this.result.continue();
- };
- }).then(function() {
- return keys;
- });
- }
- };
- if (typeof module != 'undefined' && module.exports) {
- module.exports = idbKeyval;
- } else if (typeof define === 'function' && define.amd) {
- define('idbKeyval', [], function() {
- return idbKeyval;
- });
- } else {
- self.idbKeyval = idbKeyval;
- }
- }());