为什么我的网站在IE中崩溃?

zec*_*ude 2 javascript crash jquery internet-explorer

我的网站在Firefox中工作正常,但它在IE中崩溃了.

我正在使用大量的jQuery来淡出内容.当用户点击上述链接之一几次时,它将在IE中崩溃.

这是我的网站:Idea Palette

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

有没有人有任何想法?

i_a*_*orf 12

干得好.它与你的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()  
Run Code Online (Sandbox Code Playgroud)

也许你在转换仍在运行时从DOM中删除一个元素?

  • 你从哪里得到上面的代码?我该如何修复EAX?我不知道EAX是什么,顺便说一下. (2认同)
  • 我运行了带有Visual Studio的iexplore.exe并加载了公共符号.EAX是一个CPU寄存器.你无法直接修复它......你必须弄清楚如何解决它.它是空的这一事实是你唯一的线索 - 无论你认为你在做什么对象都不存在. (2认同)

Ism*_*ael 10

我可以建议你必须遵循"分而治之战略".

删除所有的JavaScript,并尝试加载它,如果它失败,问题是你删除的代码.现在再添加你已删除的代码的"一半",如果它没有崩溃那么问题不在这一半,如果它再次崩溃,那么它是你添加的一半.现在,您必须在其工作时继续添加剩余代码的"一半",或者删除在失败时添加的一半代码.如果你最终继续这样做,你将导致一段代码,你不能分割,如果添加使IE崩溃.

这不会解决您的错误,但它可以让您了解真正的问题所在.