首页 文章

为什么我的网站在淡入到另一个淡入淡出的页面时会在IE7中崩溃?

提问于
浏览
1

请看 http://www.idea-palette.com

我有多个页面正在使用顶部导航淡入淡出 . 当用户点击任何上述按钮以使用jQuery Cycle Plugin淡入包含幻灯片放映的另一个页面时,IE7崩溃 .

当我注释掉控制幻灯片放映时间的jQuery时,IE7不再崩溃了 . 你可以在这里看到: http://www.idea-palette.com/IEindex.php

我猜IE7不喜欢它,当它消失了一些内容,其中包含一些已经在淡入淡出过程中的其他内容 . 我猜两个人在一起以某种方式超载IE7所以它崩溃了 .

在我发现jQuery Cycle Plugin导致页面崩溃之前,我问为什么会发生这种情况(Why does my website crash in IE?)和stackoverflow上的jeffamaphone在查看我的网站时发现了这个信息:

'它与你的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!CDispCon tainer :: 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中删除一个元素,而变换仍然在它上面运行?

有谁知道如何解决这个问题?

1 回答

  • 2

    正如我上次发表评论时提到的,如果你可以远程崩溃IE,你应该contact Microsoft . 此漏洞至少可以导致拒绝服务攻击,并且可能导致远程代码执行或远程root(根据需要使网页崩溃的错误很可能被利用以允许攻击者运行不受信任的代码在你的机器上) . 虽然这里的人们可能能够帮助您解决您的问题,但Microsoft确实应该得到通知,以便他们可以修复底层错误 .

    edit :两者都试图解决您自己的问题,并且为了报告错误,您应该尝试将问题减少到最小的测试用例 . 将所有内容删除到足以再现错误的最小元素集 . 然后对代码执行相同操作 . 您应该努力获得只有一两个图像的测试用例,以及触发问题的交叉渐变,没有其他任何存在 .

    然后,是的,报告错误,向他们发送一个指向最小测试用例的链接(如果可以的话,将其包含在错误报告中内联) . 提到它是一个远程拒绝服务漏洞,并且您不知道它是否可能导致远程代码执行 .

    正如我所提到的,将其缩减为最小的示例应该能够帮助您解决您的错误 . 至少,你更有可能在一个最小的代码示例上获得帮助,而不是整个网站上有很多东西,没有人真正感觉像是在挖掘 .

相关问题