2

私のサイトは Firefox では正常に動作しますが、IE ではクラッシュします。

コンテンツをフェードインするために、jQuery を大量に使用しています。ユーザーが上記のリンクのいずれかを数回クリックすると、IE でクラッシュします。

ここに私のサイトがあります: Idea Palette

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 に答える