Предполагая, что ваше второе приложение (запущенное на http://localhost:8081) является приложением Vue.js, у вас будет следующий код:
window.addEventListener('message', function(event) {
if (event.origin == 'http://localhost:8080') {
document.getElementById('output').innerHTML = event.data;
localStorage.setItem("info1", event.data.userData.info1);
localStorage.setItem("info2", event.data.userData.info2);
localStorage.setItem("info3", event.data.userData.info3);
console.log("LOCALSTORAGE: ", localStorage.getItem("info1"), localStorage.getItem("info2"), localStorage.getItem("info3") )
}
});
В типичном приложении Vue.js необходимо создать корневой экземпляр. Исходный код выглядит примерно так:
const rootInstance = {
data() {
return { /* Declare reactive properties */ };
},
methods: {
attemptAfterLogin() {
// do something here.
}
}
template: `<div>Hello App</div>`
};
const app = new Vue(rootInstance);
Цель здесь - поместить этот код инициализации в обработчик событий message
. Объединяя это в один код, это будет:
const rootInstance = {
data() {
return { /* Reactive properties */ };
},
methods: {
attemptAfterLogin() {
// do something here.
}
}
template: `<div>Hello App</div>`
};
// Initialize Vue.js app
const app = new Vue(rootInstance);
window.addEventListener('message', function(event) {
if (event.origin == 'http://localhost:8080') {
document.getElementById('output').innerHTML = event.data;
localStorage.setItem("info1", event.data.userData.info1);
localStorage.setItem("info2", event.data.userData.info2);
localStorage.setItem("info3", event.data.userData.info3);
// Mount the application
app.$mount(document.querySelector("#app"));
// Tell the Vue.js app that localStorage is now set.
app.attemptAfterLogin();
}
});
Это всего лишь один из способов ведения дел. Кроме того, пока ваш внутренний iframe не получит сообщение, у вас может быть простая анимация загрузчика.
При добавлении к сведению предпочитайте addEventListener
над onmessage
при прослушивании событий.
В двух словах, независимо от внешней среды, цель состоит в том, чтобы иметь единую точку входа / функцию для загрузки вашего приложения.