使用Internet Explorer模式框时,在页面之间删除"Flash"

Aar*_*onS 6 html javascript internet-explorer dhtml

我有一个内部Web应用程序,这是IE特定的,并使用了很多IE特定的模式框:(window.showModalDialog).

我最近收到了在网站页面之间导航时删除"flash"的请求.为此,我只是在主页面中添加了一个元转换标记:

<meta http-equiv="Page-Enter" content="blendTrans(duration=0.0)" />
Run Code Online (Sandbox Code Playgroud)

除了模态框之外,这完美地工作.当您启动模式框,然后移动它时,它后面的网页会保留模式框的跟踪,而不是重新绘制网页内容.这可以防止用户移动模态框以读取其后面的任何内容.

有没有办法防止IE特定网站中的页面之间的"闪存",并让该网站仍然使用模态框?

请注意,这是一个庞大而复杂的站点,因此重新设计它不使用模态框不是一种选择.

这是一个asp.net,c#web应用程序,如果它有任何区别,我的所有用户都在使用IE 7和IE 8.

-编辑-

要复制此内容,请将以下内容放入html页面,然后在Internet Explorer中打开它:

<html>
<head>
    <title>Test</title>
    <meta content="blendTrans(duration=0.0)" http-equiv="Page-Exit">
</head>
<body>
<script language="javascript">
    window.showModalDialog('modal.htm', window);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Dav*_*och 2

您是否尝试过此页面中的解决方案?它表示您需要将 <link /> 元素添加到 head 部分(如果您遇到无样式内容问题 [而不是白页问题])。

同样来自雅虎的最佳实践

HTML 规范明确规定样式表应包含在页面的 HEAD 中:“与 A 不同,[LINK] 只能出现在文档的 HEAD 部分,尽管它可以出现任意多次。” 无论是空白屏幕还是闪烁的无样式内容,这两种选择都不值得冒险。最佳解决方案是遵循 HTML 规范并将样式表加载到文档 HEAD 中。


确保所有页面的头部都有一个 <link /> 元素,并确保将这些样式表放在头部部分的顶部,并将 <script /> 元素放在它们后面(最好是在所有页面内容之后和紧接在页面内容之前)结束标签)。


我知道你说过你不能使用模态,但我想我应该分享这个使用jQueryFacebox的 JS 模态示例。您甚至不必修改对“showModalDialog”的调用(如果您最终使用此模式方法,您仍然可以使用元页面退出页面转换技巧)。

window.showModalDialog = function(a){
     $.get(a,function(html){
         $.facebox(html);
     });
};
window.showModalDialog('linkOnSameDomain.htm', window);
Run Code Online (Sandbox Code Playgroud)