如何在Safari扩展调用中维护JavaScript对象上下文?

时间:2019-02-22 16:54:19

标签: javascript safari-extension

我正在写一个safari扩展,当我使用匿名函数回调扩展名get请求时,我失去了调用模块的上下文。

有人知道调用回调时维护模块上下文的方法吗?

  • 我使用的是Safari App Extension,而不是旧的Safari扩展程序 代码可在Chrome扩展程序中使用。可能是由于Safari的调用方式 转到外部应用程序扩展程序。

  var MyModule = (function () {
    
      var _privateVariable = "test";
    
      var doStuff = function () {
      
      			SafariExtensionUtilities.Get("https://test.com", function(success, data, response){
            		
                	//value of private variable no longer set and is undefined
                  var x = typeof _privateVariable === "undefined"; //true
                  
                  //value of public variable is set and has correct value
                  var y = typeof MyModule.PublicVariable === "undefined"; //false
                  var z = MyModule.PublicVariable === "test"; //true
            
            });
      };
      
      return {
        PublicVariable: _privateVariable,
      };
    })();

回叫代码

eval("var fn = " + event.message.eventName);
callback(true, data, response);

0 个答案:

没有答案