0

こんにちは、立ち寄ってくれてありがとう。私はウェブを試してみましたが、これは私が本当に仕事をすることができないものです.

そのため、フィードを介して別の Web サイトからこのオブジェクトを取得します (ソース マテリアルを編集することはできません)。

<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&amp;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&amp;hl=de_DE" allowFullScreen="true" allowscriptaccess="always" allowfullscreen="true" />
</object>

現在、クロムでは、このオブジェクトは z-index に関係なく、他のすべてのオブジェクトの上にあります。これは wmode が定義されていないためです。私はそれを知っており、jqueryを介してソースを変更し、このwmodeを内部に配置できることを知っています。

$("object").each(function() {
    $(this).children("embed").attr("wmode", "opaque");
});

しかし、古き良き丁目は何も変わらない。私のiframeは正常に動作します。ほとんど同じことをしましたが、すべてうまくいきました。しかし、オブジェクトでは、私はそれを機能させることができません。jqueryの動きが遅すぎるということでしょうか..? 以下の私の js フィドルでは、ビデオを作成する必要があります。1 つは埋め込みタグ内に wmode 属性があり、これは正常に動作するので、それが正しい属性であり、それを配置する正しい場所であることがわかります。しかし、jqueryを介して属性を取得する必要があるもう1つは、まったく変更されません。

ここにjsfiddleがあります。オブジェクトの上にある赤いボックスです。「通常の」ブラウザではボックスは両方のオブジェクトの上にあり、クロムでは上部のムービーが赤いボックスの上にあります。

4

1 に答える 1

1

この関数を使用して、すべてのオブジェクトをコピーし、wmode パラメーターを挿入して、古いオブジェクトを新しいオブジェクトに置き換えることができます。

$("object").each(function() {
    var $newObject = $(this).clone(true);
    $newObject.children("embed").attr("wmode", "opaque");
    $(this).replaceWith($newObject);
});

フィドル: http://jsfiddle.net/WTE7X/3/

$htmlPHP を使用している場合、 がオブジェクトを含む文字列である場合、これは非常に簡単に実行できます。

$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
于 2012-05-12T17:05:38.203 に答える