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