【问题标题】:Why does my site crash in IE7 when fading to a page that has another fade on it?为什么我的网站在 IE7 中在淡入另一个淡入淡出的页面时崩溃?
【发布时间】:2009-04-08 02:50:15
【问题描述】:

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

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

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

我猜 IE7 不喜欢它淡入淡出的某些内容,其中包含一些已经在淡出过程中的其他内容。我猜这两者一起以某种方式使 IE7 过载,所以它崩溃了。

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

'它与您的 DirectX 过滤器有关(可能是什么在做淡入淡出)。这是堆栈,EAX 为 NULL。无论代码在做什么都是试图取消 EAX:

CDXTFilterBehavior::_ClearSurface: 6C8E87E1 mov edi,edi 6C8E87E3 推送 ebp
6C8E87E4 mov ebp,esp 6C8E87E6 推送 ecx
6C8E87E7 mov eax,dword ptr [ebp+0Ch] 6C8E87EA mov ecx,dword ptr [eax]

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 中删除一个元素,而转换仍在对其进行操作?'

有人知道我该如何解决这个问题吗?

【问题讨论】:

    标签: javascript jquery internet-explorer crash


    【解决方案1】:

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

    编辑:为了尝试解决您自己的问题,为了报告错误,您应该尝试将问题减少到最小的测试用例。将所有内容剥离为足以重现错误的最小元素集。然后对代码执行相同的操作。你应该努力得到一个只有一两张图像的测试用例,只有触发问题的淡入淡出,没有其他东西。

    然后,是的,要报告错误,请向他们发送指向您的最小测试用例的链接(或者如果可以的话,将其包含在错误报告中)。提一下这是一个远程拒绝服务漏洞,不知道会不会导致远程代码执行。

    正如我所提到的,将其缩减为一个最小的示例应该能够帮助您解决您的错误。至少,您更有可能在这里获得关于最小代码示例的帮助,而不是在整个网站上获得大量内容而没有人真正喜欢挖掘的内容。

    【讨论】:

    • 所以我应该给 microsoft 网址并告诉他们“此漏洞至少会导致拒绝服务攻击,并可能导致远程代码执行或远程 root”?
    • @Chris 在答案中回答了您的问题,因为我在评论框中没有空间。我不知道如何解决这个问题;我建议将其缩减为一个最小的示例并再次发布以查看是否有人可以帮助您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多