javascript - 为什么 IE 不识别 __SCROLLLPOSITIONY?它抛出未定义的 JS 运行时错误

标签 javascript jquery asp.net internet-explorer cross-browser

我有一些代码可以帮助在回发后保留一些弹出 div 在 View 中,因为在我们的 asp.net 页面中,我们将 MaintainScrollPositionOnPostback 设置为 true。我正在做的是获取垂直滚动量并按此值偏移 div 的位置,以便在维持垂直滚动的回发后,新的弹出 div 将在 View 中居中。这在 Chrome 中工作得很好(当然),但是当在 IE 11 中测试它时,我遇到了这个 javascript 运行时错误:0x800a1391 - JavaScript 运行时错误:'__SCROLLLPOSITIONY' 未定义

这是发生问题的 JS 代码行,非常简单:

var topValue = parseInt(__SCROLLPOSITIONY.value);

如何在 IE 11 中找到该值?我意识到对此有(可能)更好的解决方案,包括使用警报,但出于时间限制和一致性等原因,我们不要走这条路。感谢您的帮助!

最佳答案

当您使用MaintainScrollPositionOnPostBack时,ASP会生成滚动位置的隐藏字段并注入(inject)一些脚本,对于Microsoft浏览器,您必须通过在JavaScript中使用名为__nonMSDOMBrowser的检查来以不同的方式处理此问题,这是我在网上找到的一个使用示例它。

function WebForm_RestoreScrollPosition() {
    if (__nonMSDOMBrowser) {
        window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, theForm.elements['__SCROLLPOSITIONY'].value);
    }
    else {
        window.scrollTo(theForm.__SCROLLPOSITIONX.value, theForm.__SCROLLPOSITIONY.value);
    }
    if ((typeof(theForm.oldOnLoad) != "undefined") && (theForm.oldOnLoad != null)) {
        return theForm.oldOnLoad();
    }
    return true;
}

theForm.oldOnLoad = theForm.onLoad;
theForm.onLoad = WebForm_RestoreScrollPosition;

我知道这不完全是您所追求的,但它应该足以为您指明正确的方向并为您提供一些尝试的机会。

关于javascript - 为什么 IE 不识别 __SCROLLLPOSITIONY?它抛出未定义的 JS 运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43787881/

相关文章:

javascript - FirefoxOS 上的文件输入 (Boot2Gecko!==Gecko?)

javascript - Bootstrap 中可点击表格行的模态

javascript - AngularJS ngRepeat :dupes

jquery - 切换动画?

asp.net - VS2010 - ASP.NET 配置无法打开

javascript - 如何在不输入完整比较的情况下添加石头剪刀布的无限变化

javascript - 导航子页面时保持下拉菜单打开

javascript - 二维数组从 "loop"返回值

javascript - Esc 键关闭 bootstrap 模式但不关闭其中的 select2 下拉菜单

asp.net - 当你一个人工作时,告诉我如何处理大型项目!