【问题标题】:Why does my website crash in IE?为什么我的网站在 IE 中崩溃?
【发布时间】:2010-10-17 22:51:45
【问题描述】:

我的网站在 Firefox 中运行良好,但在 IE 中崩溃。

我正在使用大量的 jQuery 来淡入内容。当用户多次点击上述链接之一时,它会在 IE 中崩溃。

这是我的网站:Idea Palette

我完全不知道为什么该网站在 IE 中崩溃。我什至不知道从哪里开始调试我的问题。我的计算机上没有 Visual Studio,但在我朋友的计算机上,Visual Studio 读取一条消息“iexplore.exe [####] 中发生未处理的 win32 异常”

有人有什么想法吗?

【问题讨论】:

  • 我还没有看到任何东西。但我肯定会建议您通过摆脱多余的标签来清理空白。我也会考虑合并任何重复重复的代码,但这是一个不同的问题。
  • 如果您可以从您的网站崩溃 IE,您应该将问题报告给 Microsoft。任何可以允许攻击者从远程服务器崩溃受害者机器上的程序的错误都是潜在的安全漏洞(它至少允许拒绝服务)。

标签: javascript jquery internet-explorer crash


【解决方案1】:

给你。它与您的 DirectX 过滤器有关(可能是淡入淡出的原因)。这是堆栈,EAX 为 NULL。无论代码在做什么都是试图取消 EAX:

CDXTFilterBehavior::_ClearSurface:
6C8E87E1  mov         edi,edi 
6C8E87E3  push        ebp  
6C8E87E4  mov         ebp,esp 
6C8E87E6  push        ecx  
6C8E87E7  mov         eax,dword ptr [ebp+0Ch] 
6C8E87EA  mov         ecx,dword ptr [eax] <--- EAX is NULL

>   dxtrans.dll!CDXTFilterBehavior::_ClearSurface()     
    dxtrans.dll!CDXTFilterBehavior::_DrawUnfilteredElementLayers()  
    dxtrans.dll!CDXTFilterBehavior::_DrawElementWithProceduralSurfaces()    
    dxtrans.dll!CDXTFilterBehavior::_ExecuteFilterChain()   
    dxtrans.dll!CDXTFilterBehavior::Draw()  
    mshtml.dll!CPeerHolder::Draw()  
    mshtml.dll!CLayout::DrawClientLayers()  
    mshtml.dll!CDispContainer::DrawSelf()   
    mshtml.dll!CDispNode::Draw()    
    mshtml.dll!CDispContainer::DrawChildren()   
    mshtml.dll!CDispContainer::DrawSelf()   
    mshtml.dll!CDispNode::Draw()    
    mshtml.dll!CDispContainer::DrawChildren()   
    mshtml.dll!CDispContainer::DrawSelf()   
    mshtml.dll!CDispNode::Draw()    
    mshtml.dll!CDispContainer::DrawChildren()   
    mshtml.dll!CDispContainer::DrawSelf()   
    mshtml.dll!CDispNode::Draw()    
    mshtml.dll!CDispContainer::DrawChildren()   
    mshtml.dll!CDispContainer::DrawSelf()   
    mshtml.dll!CDispNode::Draw()    
    mshtml.dll!CDispContainer::DrawChildren()   
    mshtml.dll!CDispContainer::DrawSelf()   
    mshtml.dll!CDispNode::Draw()    
    mshtml.dll!CDispRoot::DrawEntire()  
    mshtml.dll!CDispRoot::DrawRoot()    
    mshtml.dll!CView::RenderView()  
    mshtml.dll!CDoc::OnPaint()  
    mshtml.dll!CServer::OnWindowMessage()   
    mshtml.dll!CDoc::OnWindowMessage()  
    mshtml.dll!CServer::WndProc()   
    user32.dll!_InternalCallWinProc@20()    
    user32.dll!_UserCallWinProcCheckWow@32()    
    user32.dll!_CallWindowProcAorW@24()     
    user32.dll!_CallWindowProcW@20()    
    user32.dll!_InternalCallWinProc@20()    
    user32.dll!_UserCallWinProcCheckWow@32()    
    user32.dll!_DispatchClientMessage@20()  
    user32.dll!___fnDWORD@4()   
    ntdll.dll!_KiUserCallbackDispatcher@12()    
    user32.dll!_NtUserDispatchMessage@4()   
    user32.dll!_DispatchMessageWorker@8()   
    user32.dll!_DispatchMessageW@4()    
    ieframe.dll!CTabWindow::_TabWindowThreadProc()  
    kernel32.dll!@BaseThreadInitThunk@12()  
    ntdll.dll!___RtlUserThreadStart@8()     
    ntdll.dll!__RtlUserThreadStart@8()  

也许您正在从 DOM 中删除一个元素,而转换仍在对其进行操作?

【讨论】:

  • 你从哪里得到上面的代码?我该如何修复 EAX?顺便说一句,我不知道 EAX 是什么。
  • 我运行 iexplore.exe 并附加了 Visual Studio 并加载了公共符号。 EAX 是一个 CPU 寄存器。你不能直接修复它......你必须弄清楚如何解决它。它为 null 的事实是您唯一的线索——您认为您正在操作的任何对象都不存在。
  • 我使用了分而治之的方法,当我注释掉控制幻灯片的 javascript 的第一部分时,它就开始正常工作了。因此,页面的褪色加上幻灯片的褪色会导致 Internet Explorer 崩溃。我不知道为什么。
  • 顺便说一句,它为 NULL 的事实意味着崩溃是不可利用的。如果取消引用的地址不为 NULL(至少 0x1000),则应将崩溃发送至 Secure@microsoft.com 的 MSRC,而不是在此处发布。
【解决方案2】:

我可以建议你必须遵循“分而治之的策略”。

删除所有 javascript,并尝试加载它,如果失败,问题出在您已删除的代码上。现在再次添加您删除的代码的“一半”,如果它没有崩溃,那么问题不在这一半,如果它再次崩溃,那么它在你添加的那一半。现在你必须在它工作时继续添加剩余代码的“一半”,或者如果它失败则删除你添加的一半代码。如果您最终继续这样做,您将导致一段无法分割的代码,如果添加会导致 IE 崩溃。

这不会解决你的错误,但它可能会让你知道真正的问题在哪里。

【讨论】:

    【解决方案3】:

    这是特定于 XP 的问题。我们有一个完整的开发团队正在调查这个问题,所以您不会在 Vista 中看到同样的问题。

    【讨论】:

      【解决方案4】:

      继续 @jeffamaphone 所说的,如果它与修改 DOM 有关,那么将你的 JavaScript 从

      移动到结束 标记之前可能是值得的。

      我之前在 IE 和 infamous Operation Aborted error 上遇到过问题,这样做有助于解决这个问题,但我感谢 YMMV。

      【讨论】:

        猜你喜欢
        • 2011-04-26
        • 1970-01-01
        • 2023-02-01
        • 2014-08-18
        • 1970-01-01
        • 1970-01-01
        • 2018-12-11
        • 1970-01-01
        相关资源
        最近更新 更多