嗨,谢谢你的光临。 我尝试并挖掘网络,但这是我真的无法工作的东西。
所以我通过其Feed从其他网站获取此对象(因此我无法编辑源材料)
<object width="100%" height="420" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="allowFullScreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src" value="http://www.youtube.com/v/8UFhdYhE9ko?version=3&hl=de_DE" />
<param name="allowfullscreen" value="true" />
<embed width="100%" height="420" type="application/x-shockwave-flash" src="http://www.youtube.com/v/8UFhdYhE9ko?version=3&hl=de_DE" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" />
</object>
现在,在chrome中,无论z-index如何,此对象都高于其他所有对象。这是因为没有wmode定义的事实。我知道,我知道我可以通过jquery修改源代码并将此wmode放入其中,其中包括
$("object").each(function() {
$(this).children("embed").attr("wmode", "opaque");
});
但是好老的丁目一点都没有变化。我的iframe工作正常,我做了几乎相同的事情,一切都很好。但在对象上,我无法让它工作。可能是,jquery的举动为时已晚......?在我的js小提琴下面我有视频,一个有wmode属性insinde嵌入标签,这一个工作正常,所以我知道这是正确的属性和正确的位置来放置它。但另一个,应该通过jquery获取属性,根本不会改变。
这是一个jsfiddle。它是物体上方的红色方框。在“普通”浏览器中,框位于两个对象上方,在chrome中,上部电影位于红色框上方。
答案 0 :(得分:1)
您可以使用此函数复制所有对象,插入wmode参数并将旧对象替换为新对象:
$("object").each(function() {
var $newObject = $(this).clone(true);
$newObject.children("embed").attr("wmode", "opaque");
$(this).replaceWith($newObject);
});
小提琴:http://jsfiddle.net/WTE7X/3/
如果您正在使用PHP,那么如果$html
是包含对象的字符串,则可以非常简单地执行此操作:
$doc = new DOMDocument();
$doc->loadHTMLFile('html');
$finalDoc = new DOMDocument();
$objects = $doc->getElementsByTagName('object');
for($i = 0; $i < $objects->length; $i++)
{
$embeds = $objects->item($i)->getElementsByTagName('embed');
for($j = 0; $j < $embeds->length; $j++)
{
$embeds->item($j)->setAttribute('wmode', 'opaque');
}
$finalDoc->appendChild($finalDoc->importNode($objects->item($i), true));
}
$fixedHTML = $finalDoc->saveHTML(); // This holds the new HMTL to output