Я реорганизую весь код в модули и столкнулся с проблемой доступа к переменной из iframe.
В основном у меня есть карта, на которой вы можете рисовать объекты, и когда вы хотите распечатать, вы нажимаете на выбранный элемент, и вы импортируете html-файл в iframe с другим JS-файлом, который создает новую карту и импортирует векторный слой, обращаясь к нему. переменная с parent.variable
Теперь я работаю с модулями, поэтому у меня больше нет глобальных переменных, я думал о том, чтобы сохранить переменную в cookie, но она хранит переменную как [объект, объект]
Я пытался использовать JSON.stringify (переменная), но он выдал ошибку
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
});
Есть ли другой способ получить доступ к этому var из iframe?