Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Localstorage—调用在另一个函数中定义的函数_Javascript_Html_Local Storage - Fatal编程技术网

Javascript Localstorage—调用在另一个函数中定义的函数

Javascript Localstorage—调用在另一个函数中定义的函数,javascript,html,local-storage,Javascript,Html,Local Storage,因此,我尝试在Smartbanner中使用getLocalData()和setLocalData()。但每次它都告诉我它没有定义。怎么会?我似乎不明白为什么。我不确定是否必须将它们插入init,或者这可能是由于使用了“this”,因为我不能100%确定我是否正确使用了它。但是,当我取出getLocalData()时,可以执行setLocalData(),并且它可以工作。显然,只有getlocalData()不起作用 var Varova_LocalStorageManager = functio

因此,我尝试在Smartbanner中使用getLocalData()和setLocalData()。但每次它都告诉我它没有定义。怎么会?我似乎不明白为什么。我不确定是否必须将它们插入init,或者这可能是由于使用了“this”,因为我不能100%确定我是否正确使用了它。但是,当我取出getLocalData()时,可以执行setLocalData(),并且它可以工作。显然,只有getlocalData()不起作用

var Varova_LocalStorageManager = function ( id, options ) {
  var siteID = null;

  this.init = function () {
    if(typeof options != "undefined" && "siteID" in options){
      siteID = options.siteID;
    } else {
      console.log(id + " error","No cookiename specified, did you pass in the options object?");
    }
  };
  function getOrSetData(operation, key, value){
    var itemKey = siteID + "_" + key;
    if (typeof localStorage != "undefined") {
      if(operation == "set"){
        localStorage.setItem(itemKey, value)
      } else {
        localStorage.getItem(itemKey)
      }
    } else {
      if(operation == "set"){
        setCookie(itemKey, value);
      } else {
        getCookie(itemKey);
      }
    }
  };
  this.getLocalData = function(key, value) {
    getOrSetData('get',key,value);
  };
  this.setLocalData = function (key, value) {
    getOrSetData('set',key,value);
  };
  return this;
};

    Varova_LocalStoreManager();


var Varova_mobileAppSmartbanner = function (id, options) {
    var smartBanner             = document.getElementById('smartbanner');
    var banner_height       = smartBanner.offsetHeight;
    var localStorageName    = getLocalData('app_installed');


    this.init = function(){
        addEventListeners();
        document.getElementsByClassName('smartbanner-button')[0].setAttribute('action', getAppBannerUrl());
        showOrHideSmartbanner();
    };

    var getAppBannerUrl = function() {
        var url = "";
        if(options && "urls" in options && "iosAppUrl" in options.urls && "androidAppUrl" in options.urls){
            var iphone  = navigator.userAgent.toLowerCase().indexOf("iphone") > -1;
            var android = navigator.userAgent.toLowerCase().indexOf("android") > -1;

            if (iphone) {
                url = options.urls.iosAppUrl;
            }
            if (android) {
                url = options.urls.androidAppUrl;
            }
        } else {
            console.log("Required parameters not available");
        }
        return url;
    };

    var addEventListeners = function() {
        document.querySelector('.smartbanner-input, .smartbanner-close').addEventListener('click', hideBanner);

        function hideBanner() {
            smartBanner.style.display = 'none';
            // setLocalData('app_installed', 'true')
            document.querySelector('.header').style.cssText += 'margin-top: 0; transition-property: margin-top; transition-duration: 200ms';
        }
    };

    var showOrHideSmartbanner = function (){
        var chrome_ios      = navigator.userAgent.match('CriOS');
        var is_safari       = navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1 && !chrome_ios;
        var notMobileDevice = screen.width > 1024;

        if (localStorageName == "true" || notMobileDevice) {
            smartBanner.style.display = 'none';
         } else if (is_safari) {
             document.getElementsByTagName('head')[0].appendChild( '<meta name="apple-itunes-app" content="app-id=886151323">' );
             smartBanner.style.display = 'none';
        } else {
                smartBanner.style.top = '0';
                document.querySelector('.header').style.cssText += 'margin-top:' + banner_height.toString() + 'px; transition: margin-top 300ms;';
        }
    };
    return this;
};
var Varova\u LocalStorageManager=函数(id,选项){
var siteID=null;
this.init=函数(){
if(选项类型!=“未定义”和选项中的“站点ID”){
siteID=options.siteID;
}否则{
log(id+“错误”,“未指定cookiename,是否传入了选项对象?”);
}
};
函数getOrSetData(操作、键、值){
var itemKey=siteID+“”+key;
if(本地存储的类型!=“未定义”){
如果(操作==“设置”){
setItem(itemKey,value)
}否则{
localStorage.getItem(itemKey)
}
}否则{
如果(操作==“设置”){
setCookie(itemKey,value);
}否则{
getCookie(itemKey);
}
}
};
this.getLocalData=函数(键、值){
getOrSetData('get',键,值);
};
this.setLocalData=函数(键、值){
getOrSetData('set',键,值);
};
归还这个;
};
Varova_LocalStoreManager();
var Varova_mobileAppSmartbanner=函数(id,选项){
var smartBanner=document.getElementById('smartBanner');
var banner_height=smartBanner.offsetHeight;
var localStorageName=getLocalData('app_installed');
this.init=函数(){
addEventListeners();
document.getElementsByClassName('smartbanner-button')[0].setAttribute('action',getAppBannerUrl());
showerhidesmartbanner();
};
var getAppBannerUrl=函数(){
var url=“”;
如果(选项中的选项和“URL”&&options.url中的“iosAppUrl”&&options.url中的“androidAppUrl”){
var iphone=navigator.userAgent.toLowerCase().indexOf(“iphone”)>-1;
var android=navigator.userAgent.toLowerCase().indexOf(“android”)>-1;
if(iphone){
url=options.url.iosAppUrl;
}
如果(android){
url=options.url.androidAppUrl;
}
}否则{
console.log(“所需参数不可用”);
}
返回url;
};
var addEventListeners=函数(){
document.querySelector('.smartbanner输入,.smartbanner关闭')。addEventListener('click',hideBanner);
函数hideBanner(){
smartBanner.style.display='none';
//setLocalData('app_installed','true')
document.querySelector('.header').style.cssText+='margin top:0;转换属性:margin top;转换持续时间:200ms';
}
};
var showOrHideSmartbanner=函数(){
var chrome_ios=navigator.userAgent.match('CriOS');
变量为_safari=navigator.userAgent.indexOf('safari')!=-1&&navigator.userAgent.indexOf('Chrome')=-1&&Chrome;
var notMobileDevice=screen.width>1024;
if(localStorageName==“true”| | notMobileDevice){
smartBanner.style.display='none';
}否则,如果(是_safari){
document.getElementsByTagName('head')[0].appendChild('');
smartBanner.style.display='none';
}否则{
smartBanner.style.top='0';
document.querySelector('.header').style.cssText+='页边距顶部:'+banner_高度.toString()+'px;过渡:页边距顶部300ms;';
}
};
归还这个;
};

可能不是dup,但相关:可能不是dup,但相关: