находить встроенные объекты (особенно флэш-файлы), используя javascript / jQuery - PullRequest
1 голос
/ 19 февраля 2012

Я пытаюсь написать функцию javascript, которая обнаруживает внедренные объекты. В результате моего 3-часового исследования я обнаружил, что есть 2 основных подхода к использованию файла .swf в html

  1. Тег объекта, пример: <object data="intro.swf" height="200" width="200"/>

  2. Вставить тег, пример: <embed src="intro.swf" height="200" width="200"/>

Но есть третий подход, кросс-браузерный и более распространенный:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
    codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0"
    width="100"
    height="100">
<param name="movie" value="sample.swf">
<param name="quality" value="high">
<embed src="sample.swf" quality="high" width="100" height="100"
       type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">

Я нашел здесь функцию :

function getFlashMovieObject(movieName) {
    if (window.document[movieName]) {
        return window.document[movieName];
    }
    if (navigator.appName.indexOf("Microsoft Internet") == -1) {
        if (document.embeds && document.embeds[movieName])
            return document.embeds[movieName];
    }
    else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
    {
        return document.getElementById(movieName);
    }
}

но эта функция принимает атрибут id / Name в качестве аргумента и мне не подходит. Я подумал, что лучше сначала определить браузер, а потом искать объект flash. Я все еще пытаюсь. Что я должен сделать, чтобы обнаружить объект RENDERED flash ??

1 Ответ

1 голос
/ 19 февраля 2012

Как насчет этого:

JQuery:

$('object:has(embed)');

Ваниль JS:

function getCompleteObjects () {
    var objects = document.getElementsByTagName('object'),
        len = objects.length,
        complete = [],
        i = 0;

    for (; i < len; i++) {
        var embed = objects[i].getElementsByTagName('embed');
        if (embed) {
            complete.push(objects[i]);
        }
    }

    return complete;
}

JQuery Fiddle: http://jsfiddle.net/Kai/9vFgT/

Ванильная скрипка JS: http://jsfiddle.net/Kai/WZEvF/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...