简体   繁体   English

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

[英]Why does my website crash in IE?

My site works fine in Firefox, but it crashes in IE. 我的网站在Firefox中工作正常,但它在IE中崩溃了。

I am using alot of jQuery in order to fade in content. 我正在使用大量的jQuery来淡出内容。 When the user clicks on one of the above links a few times, it will crash in IE. 当用户点击上述链接之一几次时,它将在IE中崩溃。

Here is my site: Idea Palette 这是我的网站: Idea Palette

I have absolutely no idea why the site crashes in IE. 我完全不知道为什么网站在IE中崩溃了。 I don't even know where to begin to debug my problem. 我甚至不知道从哪里开始调试我的问题。 I don't have Visual Studio on my computer, but on my friends computer Visual Studio reads a message of "An unhandled win32 exception occurred in iexplore.exe[####]" 我的计算机上没有Visual Studio,但在我的朋友计算机上,Visual Studio会读取一条消息“iexplore.exe [####]中发生了未处理的win32异常”

Does anyone have any ideas? 有没有人有任何想法?

Here you go. 干得好。 It has something to do with your DirectX filter (probably what's doing the fades). 它与你的DirectX过滤器有关(可能正在进行淡入淡出)。 Here's the stack, and EAX is NULL. 这是堆栈,EAX是NULL。 Whatever the code is doing is trying to deref EAX: 无论代码在做什么,都试图解析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()  

Perhaps you're removing an element from the DOM while the transform is still operating on it? 也许你在转换仍在运行时从DOM中删除一个元素?

I can suggest that you have to follow the "Divide and Conquer Strategy". 我可以建议你必须遵循“分而治之战略”。

Remove all your javascript, and try to load it, if it fail the problem is with the code you have removed. 删除所有的JavaScript,并尝试加载它,如果它失败,问题是你删除的代码。 Now add again "half" of the code that you have removed, if it didn't crash then the problems isn't in this half, if it crashes again then it is in the half you have added. 现在再添加你已删除的代码的“一半”,如果它没有崩溃那么问题不在这一半,如果它再次崩溃,那么它是你添加的一半。 Now you have to keep adding "half" of the remaining code when it works, or removing half of the code you have added if it fails. 现在,您必须在其工作时继续添加剩余代码的“一半”,或者删除在失败时添加的一半代码。 If you keep doing this eventually you will led to a piece of code that you can't divide and if added make IE crash. 如果你最终继续这样做,你将导致一段代码,你不能分割,如果添加使IE崩溃。

This will not solve your bug but it may give you an idea where the real problem is. 这不会解决您的错误,但它可以让您了解真正的问题所在。

This is an XP specific issue. 这是XP特定的问题。 We have a full team of developers looking into the issue so you will not see the same issue in Vista. 我们有一整套开发人员正在调查此问题,因此您不会在Vista中看到相同的问题。

Going on from what @jeffamaphone was saying, if it is something to do with modifying the DOM then it might be worth moving your JavaScript from the <head> to just before the closing </body> tag. 继续@jeffamaphone所说的,如果它与修改DOM有关,那么将JavaScript从<head>移动到关闭</ body>标记之前可能是值得的。

I have had issues with IE before and the infamous Operation Aborted error and doing this helped fix that, but I appreciate that YMMV. 我以前遇到过IE的问题和臭名昭着的Operation Aborted错误 ,这样做有助于解决这个问题,但我很欣赏YMMV。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM