Browse Source

Add polyfills for older browsers, fix #31

Gerald 10 years ago
parent
commit
254b254027
5 changed files with 24 additions and 4 deletions
  1. 1 1
      src/background/db.js
  2. 1 1
      src/background/main.js
  3. 20 0
      src/background/utils.js
  4. 1 1
      src/common.js
  5. 1 1
      src/options/views/tab-settings.js

+ 1 - 1
src/background/db.js

@@ -554,7 +554,7 @@ VMDB.prototype.parseScript = function (data) {
       script.custom.lastInstallURL = data.url;
     return _this.saveScript(script, tx);
   }).then(function (script) {
-    Object.assign(res.data, scriptUtils.getScriptInfo(script));
+    _.assign(res.data, scriptUtils.getScriptInfo(script));
     return res;
   });
 };

+ 1 - 1
src/background/main.js

@@ -20,7 +20,7 @@ var commands = {
       chrome.tabs.sendMessage(src.tab.id, {cmd: 'GetBadge'});
     return data.isApplied
     ? vmdb.getScriptsByURL(url).then(function (res) {
-      return Object.assign(data, res);
+      return _.assign(data, res);
     }) : Promise.resolve(data);
   },
   UpdateScriptInfo: function (data, src) {

+ 20 - 0
src/background/utils.js

@@ -166,3 +166,23 @@ var tester = function () {
     testURL: testURL,
   };
 }();
+
+_.forEach = _.forEach || function (arr, cb) {
+  var length = arr.length;
+  for (var i = 0; i < length; i ++) cb(arr[i], i, arr);
+  return arr;
+};
+_.slice = _.slice || function () {
+  var empty = [];
+  var slice = empty.slice;
+  return function () {
+    return slice.apply(arguments[0] || empty, slice.call(arguments, 1));
+  };
+}();
+_.assign = _.assign || Object.assign || function () {
+  var res = arguments[0];
+  res && _.forEach(_.slice(arguments, 1), function (obj) {
+    if (obj) for (var k in obj) res[k] = obj[k];
+  });
+  return res;
+};

+ 1 - 1
src/common.js

@@ -74,7 +74,7 @@ _.getUniqId = function () {
  * Get locale attributes such as `@name:zh-CN`
  */
 _.getLocaleString = function (meta, key) {
-  var lang = navigator.languages.find(function (lang) {
+  var lang = _.find(navigator.languages, function (lang) {
     return (key + ':' + lang) in meta;
   });
   if (lang) key += ':' + lang;

+ 1 - 1
src/options/views/tab-settings.js

@@ -110,7 +110,7 @@ var SettingsTab = BaseView.extend({
       });
     }
     function getVMFiles(entries) {
-      var i = entries.findIndex(function (entry) {
+      var i = _.findIndex(entries, function (entry) {
         return entry.filename === 'ViolentMonkey';
       });
       if (~i) return new Promise(function (resolve, reject) {