Ver Fonte

minor fix

Gerald há 12 anos atrás
pai
commit
8e70eff062
6 ficheiros alterados com 49 adições e 30 exclusões
  1. 2 1
      README.md
  2. 1 1
      _locales/zh/messages.json
  3. 43 24
      background.js
  4. 1 1
      manifest.json
  5. 1 2
      options.js
  6. 1 1
      style.css

+ 2 - 1
README.md

@@ -1,7 +1,8 @@
 Violentmonkey
 =============
 
-Violentmonkey provides userscripts support for Chromium-based Opera.
+Violentmonkey provides userscripts support for Chromium-based Opera.  
+Violentmonkey for Opera Presto: <https://github.com/gera2ld/Violentmonkey-oex>
 
 Multiple language
 ---

+ 1 - 1
_locales/zh/messages.json

@@ -104,7 +104,7 @@
 		"description": "Check all scripts for updates."
 	}, 
 	"buttonAdvanced": {
-		"message": "高级选项", 
+		"message": "高级", 
 		"description": "Button to show the advanced options."
 	}, 
 	"labelInstalledScripts": {

+ 43 - 24
background.js

@@ -95,6 +95,7 @@ function vacuum(o,src,callback) {
 				if(v.meta.icon) cc[v.meta.icon]=1;vl[v.uri]=1;
 				r.continue();
 			} else {
+				setOption('maxPosition',pos=p);
 				vacuumDB('require',rq);
 				vacuumDB('cache',cc);
 				vacuumDB('values',vl);
@@ -282,18 +283,23 @@ function fetchURL(url, cb, type) {
   if (cb) req.onloadend = cb;
   req.send();
 }
+var _cache={},_require={};
 function fetchCache(url) {
+	if(_cache[url]) return;
+	_cache[url]=1;
 	fetchURL(url, function() {
 		if (this.status!=200) return;
 		var o=db.transaction('cache','readwrite').objectStore('cache');
-		o.put({uri:url,data:this.response});
+		o.put({uri:url,data:this.response}).onsuccess=function(){delete _cache[url];};
 	}, 'arraybuffer');
 }
 function fetchRequire(url) {
+	if(_require[url]) return;
+	_require[url]=1;
 	fetchURL(url, function() {
 		if (this.status!=200) return;
 		var o=db.transaction('require','readwrite').objectStore('require');
-		o.put({uri:url,code:this.responseText});
+		o.put({uri:url,code:this.responseText}).onsuccess=function(){delete _require[url];};
 	});
 }
 function updateItem(r){
@@ -395,35 +401,37 @@ function enableScript(d,src,callback) {
 	};
 	if(callback) callback();
 }
+var _update={};
 function checkUpdateO(o) {
-  var r={id: o.id, hideUpdate: 1, status: 2};
+	if(_update[o.id]) return;_update[o.id]=1;
+	function finish(){delete _update[o.id];}
+  var r={id:o.id,hideUpdate:1,status:2};
   function update() {
-    var u = o.custom.downloadURL || o.meta.downloadURL;
-    if (u) {
-      r.message = _('msgUpdating');
-      fetchURL(u, function() {
+    var u=o.custom.downloadURL||o.meta.downloadURL;
+    if(u) {
+      r.message=_('msgUpdating');
+      fetchURL(u,function(){
         parseScript({
 					id: o.id,
           status: this.status,
           code: this.responseText
         });
       });
-    } else r.message = '<span class=new>' + _('msgNewVersion') + '</span>';
-    updateItem(r);
+    } else r.message='<span class=new>'+_('msgNewVersion')+'</span>';
+    updateItem(r);finish();
   }
-  var u = o.custom.updateURL || o.meta.updateURL;
-  if (u) {
-    r.message = _('msgCheckingForUpdate');
-    updateItem(r);
-    fetchURL(u, function() {
-      r.message = _('msgErrorFetchingUpdateInfo');
-      if (this.status == 200) try {
-        var m = parseMeta(this.responseText);
-        if (canUpdate(o.meta.version, m.version)) return update();
-        r.message = _('msgNoUpdate');
-      } catch (e) {}
+  var u=o.custom.updateURL||o.meta.updateURL;
+  if(u) {
+    r.message=_('msgCheckingForUpdate');updateItem(r);
+    fetchURL(u,function() {
+      r.message=_('msgErrorFetchingUpdateInfo');
+      if(this.status==200) try {
+        var m=parseMeta(this.responseText);
+        if(canUpdate(o.meta.version,m.version)) return update();
+        r.message=_('msgNoUpdate');
+      } catch(e){}
       delete r.hideUpdate;
-      updateItem(r);
+      updateItem(r);finish();
     });
   }
 }
@@ -514,13 +522,24 @@ function getData(data,src,callback) {
 	getSettings();
 }
 function exportZip(z,src,callback){
+	function getSettings(){
+		var o=db.transaction('settings').objectStore('settings');
+		o.openCursor().onsuccess=function(e){
+			var r=e.target.result,v;
+			if(r) {
+				v=r.value;
+				d.settings[v.key]=v.value;
+				r.continue();
+			} else getScripts();
+		};
+	}
 	function getScripts(){
 		function loop(){
 			var i=z.data.shift();
 			if(i) o.get(i).onsuccess=function(e){
 				var r=e.target.result;
 				if(r) {
-					d.data.push(r);
+					d.scripts.push(r);
 					if(z.values) values.push(r.uri);
 				}
 				loop();
@@ -544,8 +563,8 @@ function exportZip(z,src,callback){
 		} else finish();
 	}
 	function finish(){callback(d);}
-	var d={data:[]},values=[];
-	getScripts();
+	var d={scripts:[],settings:{}},values=[];
+	getSettings();
 }
 
 chrome.runtime.onConnect.addListener(function(p){

+ 1 - 1
manifest.json

@@ -3,7 +3,7 @@
 	"version" : "2.0",
 	"manifest_version" : 2,
 	"description" : "__MSG_extDescription__",
-	"developer": {"name" : "Gerald", "url" : "http://gleo.tk"},
+	"developer": {"name" : "Gerald", "url" : "http://gera2ld.blog.163.com"},
 	"homepage_url":"http://github.com/gera2ld/Violentmonkey-nex",
 	"icons" : {
 		"16":"images/icon16.png",

+ 1 - 2
options.js

@@ -106,7 +106,6 @@ function addItem(o){
 			chrome.runtime.sendMessage({cmd:'RemoveScript',data:ids[i]});
 			delete map[ids.splice(i,1)[0]];
 			L.removeChild(p);
-			if(i==L.childNodes.length) i--;
 		},
 		update:function(i){
 			chrome.runtime.sendMessage({cmd:'CheckUpdate',data:ids[i]});
@@ -268,7 +267,7 @@ function exported(o){
 	var writer=null,files=[],adding=false,
 			n,_n,names={},vm={scripts:{},settings:o.settings};
 	if(xD.checked) vm.values={};
-	o.data.forEach(function(c){
+	o.scripts.forEach(function(c){
 		var j=0;
 		n=_n=c.custom.name||c.meta.name||'Noname';
 		while(names[n]) n=_n+'_'+(++j);names[n]=1;

+ 1 - 1
style.css

@@ -32,7 +32,7 @@ fieldset{border-radius:5px;}
 #sList{overflow-x:hidden;overflow-y:auto;position:absolute;top:22px;left:0;right:0;bottom:10px;}
 #sList>div{display:block;padding:10px;border-top:1px dashed gray;overflow:hidden;height:80px;position:relative;}
 #sList>div:last-child{border-bottom:1px dashed gray;}
-#sList>div.moving{background:#bb6;border:1px outset gray;}
+#sList>div.moving{background:#bb6;border:1px outset gray;cursor:move;}
 #sList.simple>div{height:50px;}
 #sList .version,#sList .author{margin-left:20px;color:gray;font-style:italic;}
 #sList.simple .author{display:none;}