我要将整个代码重构为模块,并且遇到从iframe访问变量的问题。
基本上我有一张地图,您可以在其中绘制特征,当您要打印时,单击选择的项目,然后将iframe中的html文件与另一个JS文件一起导入,以创建新地图并导入矢量层。带有parent.variable的var
现在我正在使用模块,因此不再有全局变量,我当时正在考虑将var存储在cookie中,但是它将var存储为[object,object]
我尝试使用JSON.stringify(variable),但它给了我一个错误
Uncaught TypeError: Converting circular structure to JSON at JSON.stringify
在此示例中,您在地图上绘制要素时可以在浏览器控制台中看到实际的变量
有关cookie的代码来自第94行
https://codepen.io/sebalaini/pen/rpqYKL?editors=0010
这里是现场项目
https://www.traffwebdemo.co.uk/parking/main.html
这里是我用来创建图层的代码(样式无法正常工作,但我不在乎,这是我要在这个问题上重复使用的旧项目)
Msource = new ol.source.Vector();
var myColors = ['red','blue','green', 'yellow'];
var iterator = -1;
function styleFn(f){
var retSytle;
if (iterator == 2){
iterator =-1
}
iterator = iterator + 1;
if (typeof(f.get('styledwithcolor')) != 'undefined'){
retSytle = new ol.style.Style({
image: new ol.style.Circle({
radius: 6,
stroke: new ol.style.Stroke({
color: 'white',
width: 2
}),
fill: new ol.style.Fill({
color: f.get('styledwithcolor')
})
})
});
} else {
f.set('styledwithcolor',myColors[iterator]);
retSytle = new ol.style.Style({
image: new ol.style.Circle({
radius: 6,
stroke: new ol.style.Stroke({
color: 'white',
width: 2
}),
fill: new ol.style.Fill({
color: myColors[iterator]
})
})
});
}
return [retSytle];
}
var markLayer = new ol.layer.Vector({
source: Msource,
style: styleFn
});
从iframe访问此var的任何其他方法?