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

使用window.location刷新页面时IE11出现SCRIPT70权限拒绝错误

解决IE11中修改QueryString刷新页面时的"SCRIPT70: Permission denied"问题

这种IE11的玄学权限问题真的让人抓狂!我之前也碰到过类似的场景,结合你排除了iframe、跨域的前提,给你整理几个实际验证有效的解决方案和排查方向:

可能的根源

IE11对window.location的处理有不少特殊的缓存和安全校验逻辑,间歇性报错大概率是这几个情况:

  • IE11偶尔会把同域下修改querystring的操作误判为不安全操作
  • 页面还没完全加载完成就触发刷新,导致浏览器权限校验异常
  • window.location直接赋值的方式在IE11下存在竞态条件冲突

具体解决方法

1. 改用window.location.href赋值

IE11对window.location直接赋值的兼容性不如window.location.href,把你的刷新代码改成这样试试:

// 原来的代码可能是 window.location = newUrl;
// 替换成
window.location.href = newUrl;

很多时候这个微小的改动就能搞定IE11的权限报错。

2. 给刷新操作加个小延迟

如果是页面未完全就绪时触发刷新导致的问题,可以给刷新加个100ms左右的延迟,让IE11有足够时间处理当前页面状态:

function handleFilterSelect(newUrl) {
  setTimeout(() => {
    window.location.href = newUrl;
  }, 100);
}

另外也可以确保事件绑定在DOMContentLoaded之后执行,避免页面未加载完成就触发操作:

document.addEventListener('DOMContentLoaded', function() {
  // 绑定筛选器的点击事件
  document.querySelector('.filter-option').addEventListener('click', handleFilterSelect);
});

3. 用window.location.replace()替代直接赋值

replace()方法不会在历史记录中添加新条目,IE11对这个方法的权限校验更宽松:

window.location.replace(newUrl);

如果不需要保留当前页面的历史记录,这个方法值得优先尝试。

4. 手动构建完整绝对URL

有时候IE11对相对URL的解析会出问题,建议手动拼接完整的绝对URL:

function buildFilterUrl(queryParams) {
  const baseUrl = window.location.origin + window.location.pathname;
  // 注意:IE11支持URLSearchParams,但如果项目没加polyfill就用字符串拼接
  const searchStr = new URLSearchParams(queryParams).toString();
  return `${baseUrl}?${searchStr}`;
}

5. 检查IE11的文档模式

有时候页面被强制切换到旧文档模式(比如IE7/8)也会导致这类问题:

  • 按F12打开开发者工具,切换到「仿真」标签页
  • 确认「文档模式」设置为「Edge」或「IE11」
  • 取消勾选「在兼容性视图中显示Intranet站点」

总结

优先尝试前三个方案(换href、加延迟、用replace),这三个是解决这类IE11权限问题最常用的手段,大概率能搞定你的间歇性报错。如果还是不行,再排查文档模式和URL构建方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:40:40