You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Edge中onLoad/onSave事件失效,求兼容替代方案

解决Microsoft Edge中onSave事件兼容问题(替代IE废弃的onSave)

我正在修正JavaScript代码以兼容Microsoft Edge,此前在Internet Explorer中正常运行的onLoad和onSave事件在Edge中无法工作。已知onSave事件已被废弃,我已找到onLoad事件的替代实现方式,但仍需获取onSave事件的替代方案。

原.Ascx页面代码

<div id="divMenu" onchange ="saveState()" onLoad ="loadState()" class="saveHistory" style="display:none;"></div>

原JS文件代码

function loadState(){/* Code */}
function saveState(){/* Code */}

已实现的onLoad替代代码

<script type="text/javascript">
        window.onload = loadState('divMenu');
</script>

onSave事件的替代方案

由于IE专属的onSave事件已被废弃,在Edge等现代浏览器中需要根据业务场景选择合适的替代方案:

  • 页面关闭/刷新时触发保存:如果原onSave是在页面关闭或刷新时执行状态保存,可使用beforeunload事件:
window.addEventListener('beforeunload', function(event) {
  saveState();
  // 注意:现代浏览器大多会忽略自定义提示语,仅用于触发事件逻辑
});
  • 元素状态变更时触发保存:如果原onSave是绑定在div的onchange上(div默认无onchange事件),需明确触发时机,比如在菜单操作、内容修改后手动调用saveState(),或给实际交互元素绑定事件:
// 示例:给菜单按钮绑定点击事件触发保存
document.getElementById('menuButton').addEventListener('click', function() {
  saveState();
});
  • 监听浏览器历史变更:如果是和页面历史状态相关的保存,可使用popstate事件配合history.pushState管理状态:
// 保存状态时更新历史记录
function saveState() {
  // 你的保存逻辑
  const state = { menuState: 'your-state-data' };
  history.pushState(state, '', window.location.href);
}

// 监听历史状态变化
window.addEventListener('popstate', function(event) {
  if (event.state) {
    // 恢复状态逻辑
    loadState();
  }
});

内容的提问来源于stack exchange,提问作者radja01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:13:16