2

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

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

这是我的网站:创意调色板

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

有没有人有任何想法?

4

4 回答 4

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()  

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

于 2009-04-07T01:16:54.927 回答
10

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

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

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

于 2009-04-07T01:29:06.227 回答
1

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

于 2009-10-09T11:58:57.153 回答
0

继续@jeffamaphone 所说的话,如果它与修改 DOM 有关,那么可能值得将您的 JavaScript 从 <head> 移动到结束 </body> 标记之前。

我之前遇到过 IE 问题和臭名昭著的 Operation Aborted 错误,这样做有助于解决这个问题,但我很欣赏 YMMV。

于 2009-04-07T12:19:28.160 回答