0

看看这个bug,

这是代码:“我们有一个简单的网页,其中有一个非常大的 iframe,向左移动,我们看到它的中心部分。然后使用 javascript,我们在中间添加一个 flash 对象(一个时钟)(位置 1000x1000) 所以它位于 iframe 的可见部分。起初,flash 片段渲染得很好,但在我在这里提到的“魔术”步骤之后,flash 片段没有渲染“

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
</HEAD>
<BODY>
<iframe id="iframe" style="position: absolute; left: -1000px; top: -1000px; width:2000px; height: 2000px; border: 1px solid black"></iframe>
<SCRIPT LANGUAGE="JavaScript">
window[0].document.write('<body><div id="FlashContainer" style="display: inline;"><embed id="embed" name="embed" type="application/x-shockwave-flash" wmode="transparent" src="http://edmullen.net/flash/relog.swf" allowscriptaccess="always" allowfullscreen="true" swliveconnect="true" style="vertical-align: top; margin: 0px; width: 728px; height: 300px; clip: rect(0px 728px 300px 0px); position: absolute; left: 1000px; top: 1000px; z-index: 1;"></div></body>');
window[0].document.body.style.paddingLeft = "1000px"; //without this works
window[0].document.body.style.paddingTop = "1000px"; //without this works
</SCRIPT>
</BODY>
</HTML> 

在 Chrome 中运行此代码,打开 devtool (F12):

选择元素嵌入:

  1. 更改值:

    • 职位:亲戚
    • 左:0px
    • 顶部:0px
      • (有时这里没有渲染闪光灯!)
  2. 再次更改为:

    • 位置:绝对
    • 左:1200
    • 最高:1200

点评:通过这两个步骤,我们将embed元素移动到了iframe的左上角,然后我们恢复了原来的位置

那么,漏洞在哪里?错误是未呈现 flash 元素(可以在步骤 1 或 2 中)。要检查它,请按右键单击(在视口的左上角),然后会出现 Flash 弹出菜单。

那不是所有人!如果你改变元素“FlashContainer”的显示属性,那么flash片段就会出现在那里!

注意:问题是由填充 left & top 引起的,我不知道为什么会这样。

谢谢!

4

1 回答 1

0

尝试将 iframe 的 z-index 设置为 1 或更大。

于 2012-12-18T21:37:37.790 回答