class IframeRouteManager {
|
constructor() {
|
this.iframeRoutes = []
|
}
|
static getInstance() {
|
if (!IframeRouteManager.instance) {
|
IframeRouteManager.instance = new IframeRouteManager()
|
}
|
return IframeRouteManager.instance
|
}
|
/**
|
* 添加 iframe 路由
|
*/
|
add(route) {
|
if (!this.iframeRoutes.find((r) => r.path === route.path)) {
|
this.iframeRoutes.push(route)
|
}
|
}
|
/**
|
* 获取所有 iframe 路由
|
*/
|
getAll() {
|
return this.iframeRoutes
|
}
|
/**
|
* 根据路径查找 iframe 路由
|
*/
|
findByPath(path) {
|
return this.iframeRoutes.find((route) => route.path === path)
|
}
|
/**
|
* 清空所有 iframe 路由
|
*/
|
clear() {
|
this.iframeRoutes = []
|
}
|
/**
|
* 保存到 sessionStorage
|
*/
|
save() {
|
if (this.iframeRoutes.length > 0) {
|
sessionStorage.setItem('iframeRoutes', JSON.stringify(this.iframeRoutes))
|
}
|
}
|
/**
|
* 从 sessionStorage 加载
|
*/
|
load() {
|
try {
|
const data = sessionStorage.getItem('iframeRoutes')
|
if (data) {
|
this.iframeRoutes = JSON.parse(data)
|
}
|
} catch (error) {
|
console.error('[IframeRouteManager] 加载 iframe 路由失败:', error)
|
this.iframeRoutes = []
|
}
|
}
|
}
|
|
IframeRouteManager.instance = null
|
|
export { IframeRouteManager }
|