чудо{вищные} заметки

Sorry for my terrible english. My native language is PHP.

Flash, ActiveX & IE update. part II

Эпопея с рамками вокруг флеша продолжается…

Сперва обнаружилось, что код, который я приводил в прошлом посте не работает в IE версий ниже 6-ой (точнее он работал, но не совсем так как задумано ;o) ) . Пришлось его немного подточить — flashvars теперь беруться не из тега PARAM, а из свойства altHTML у тега OBJECT (это свойство доступно только в IE и содержит html код с тегом EMBED), и вот код работает в IE 5.5 и IE5… но…

Но были замечены падения браузеров (5-го и 5.5) после переписывания outerHTML…
С другой стороны рамки вокруг ActiveX в этих браузерах мною замечены не были… посему код flash_replacer.js теперь исполняется только в IE6 (седьмой покамест beta — на него не рассчитываю).

Собственно код находиться здесь. (v.0.3.1) (v.0.4)(v.0.4.1)(v.0.5)(v.0.5.1)(v.0.6)(v.0.7)

Нуждающиеся в нём могут качать и пользоваться.
Знающие могут помочь мне с ответом на вопрос — в IE версий ниже 6-ой рамки есть или нету?
Баги и вообще любые фидбеки приветствуются…

UPDATE:
Исправил маленький «глюк», переименовал файл — теперь последняя версия называется flash_replacer_latest.js (находится по ссылке выше). Просьба к товарищам ссылающимся на данный файл поменять ссылку на файл (заранее спасибо за изменения и за ссылку вообще ;o) )

27.04 — Поправил проверку classid и сделал аналогичный прогон по embed-ам вне object-а

11.05 — Поправил регулярку, с помощью которой вытаскивались flashvars(они могут быть многострочными)

23.05 — удаляю outerHTML на window.unload (ie иногда падал из-за memory leak), flash_replacer теперь запускается только в winxp ie6+. Подробнее чуть позже опишу в третьей части «эпопеи»…
24.05 — workaround для flashvars, которые вставляются как get-параметры в src мувика

30.06 — теперь используется SWFObject для внедрения «переписанных флешек», в связи с этим баги с падением IE исчезли, но «маленько» уменьшилась функциональность — восстановлю на днях работу c embed и flashvars, которые передаются get-параметрами в src мувика

Уже месяц висит draft-пост про «завершение эпопеи»… но похоже конца этой «эпопеи» нет и не предвидится ;o)
Продолжение следует…

Technorati Tags: , ,

24 апреля, 2006 - Posted by | DailyWTF, dev, flash, js, web

20 комментариев »

  1. все получилось в лучшем виде … спасибо огромное

    ЗЫ: вот уж эти мелкомягкие недомерки 8-(

    комментарий от bhagavan | 2 мая, 2006

  2. а почему не работают кнопки когда жмешь на них, там написан в акшин скрипт javascript:mywindow=window.open….. бла бла
    короче оы не фуричить что делать подскажите

    комментарий от student | 2 мая, 2006

  3. то есть JS не пашет в Flash что ли
    помогите плизз
    вот код на кнопке
    getURL(«javascript:еуые=window.open(‘https://#.htm,’toolbar=0,top=0,left=0,width=800,height=650,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,copyhistory=1’);void(0);»);
    она не пашет
    а когда пишешь без javascript
    getURL(«https://#.htm»,»_blank»);
    работает в чем дело?

    комментарий от student | 2 мая, 2006

  4. помогите плизз
    вот код на кнопке
    getURL(”javascript:test=window.open(’https://test.htm,’toolbar=0,top=0,left=0,width=800,height=650,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,copyhistory=1′);void(0);”);
    она не пашет
    а когда пишешь без javascript
    getURL(”https://test.htm”,”_blank”);
    работает в чем дело?
    с этим обновлением IE не пашет JS в Flash
    Как быть?

    Comment by student | May 2, 2006

    Leave a comment
    Name

    e-Mail

    Website

    « Previous |

    комментарий от student | 3 мая, 2006

  5. 2student:
    флеша под рукой сейчас нет, но конструкция вида getURL(‘javascript:openWindow()’); (где openWindow — функция объявленная непосредственно в js-файле ) работает нормально.

    а с твоим кодом попробую чуть позже, когда доберусь до флеша.

    P.S. а флешка не работает только в IE ? или в других браузерах тоже не работает ? сильно смущает «copyhistory»….

    комментарий от MiRacLe | 3 мая, 2006

  6. Блин, а как быть если у меня флэш-кнопка изначально проработана так, что я в html подставлял для нее url и текст на ней ну типа .. бла бла бла «images/menu_button.swf?t=ГЛАВНАЯ&l=index.htm». Если использовать алгоритм предложенный MiRacLe, а также теми кто предлагает «Путь самурая», то скрипт безусловно фигачит саму кнопку, но на этом конец, ни url’a ни надписи на ней (хотя может я чего не так делаю :( ). Есть ли возможность, чтобы кнопка работала в прежнем режиме, ну т.е. чтобы ей можно было бы присваивать значения url и надпись на ней из html, но при этом используя предлагаемые уважаемыми людьми алгоритм? Я конечно выход нашел вроде .. но этомега путь самурая … каждой кнопке во флэше присваивать url и делать тупо в нем же надпись именно для этой кнопки … но это жесть … 8-)

    комментарий от znatok Ne | 4 мая, 2006

  7. 2 MIRacle спасибо заранее что расмотришь мою проблемму.
    А мне не нужно в других хотябы в IE работало бы. А твой код пашет ушла рамка tooltip. Но осталась вон та проблемма с кнопкой.

    комментарий от student | 5 мая, 2006

  8. 2student:
    сорри за такой большой «перерыв»(праздники,работа,отдых….) — проблема твоя решается 2-умя способами (оба требуют перекомпиляции swf-ок)

    1. сделать stop(); а потом getURL(‘javascript: window.open(«http://domain.tld/page.ext»,»windowName»,»window_feature=value»)’);

    2. вызывать popup как
    getURL(‘javascript:void window.open(«http://domain.tld/page.ext»,»windowName»,»window_feature=value»)’);

    комментарий от MiRacLe | 20 мая, 2006

  9. 2student:
    обрати кстати внимание — 2-ой параметр функции window.open — это имя окна, параметры идут третьим!

    комментарий от MiRacLe | 20 мая, 2006

  10. znatok Ne — можно быть уверенным, что flashvars (то что после знака вопроса в src мувика) у тебя одинаковые в object и в embed ?

    а ещё лучше — выложи куда-нибудь пример "неработающего"  кода…

    комментарий от MiRacLe | 20 мая, 2006

  11. обещанный код

    комментарий от znatok Ne | 24 мая, 2006

  12. завтра утром гляну.
    скорее всего сделаю то что после знака вопроса в обычные flashvars — должно получиться.

    znatok Ne — пробуй версию 6.0, на тестовых примерах у меня отработало (во флешках переменные доступны как _root.t и _root.l)

    комментарий от MiRacLe | 24 мая, 2006

  13. MiRacLe … видимо ламерство мое сверх меры :( … но рамка у меня все равно на месте … чтобы было понятно о чем я говорю .. и может быть так проще будет найти мою ошибку .. вот тут пример страницы с кнопкой

    А вот тут архив с исходником

    И спасибо тебе большое, что откликаешься на решение проблемы … ;)

    комментарий от znatok Ne | 25 мая, 2006

  14. 1. Рамок не вижу… (какая версия IE используется?)
    2. в архиве (и на странице) «старая» (0.4) версия flash_replacer — последняя версия 0.6

    3. вот скриншот твоей кнопки — без рамок.

    может быть версия IE ? какая винда? и винда ли? ;o)

    комментарий от MiRacLe | 25 мая, 2006

  15. MiRacLe

    ты прав ушла рамка .. (вот же странно … но она ж там была :/) …

    А вообще спасибо тебе огроменное … человечище .. помог решить важную проблему для меня ;)

    PS: винда ХР SP2
    IE 6.0.2900.2180

    комментарий от znatok Ne | 27 мая, 2006

  16. ну вот и славно :)

    комментарий от MiRacLe | 27 мая, 2006

  17. MiRacLe … так просто не уйти … мне :) .. вобщем проблема с твоим скриптом следующая … в ХР (SP2 и IE 6.0.2900.2180) страница открывается и по прошествии пары секунд IE выдает ошибку и страница в срочном порядке закрывается.
    В локальном режиме (на машине если запускать иннет страницы на харде размещенные) таже фигня … скрипт убираю из тела страницы (ну да конечно сразу возвращается рамка 8-) ) и больше не выбрасывает … поэтому думаю трабл в скрипте … :-/
    ЗЫ: А теоретически может твой скрипт каким то образом конфликтовать с иными скриптами прописанными в теле html страницы (я в общем то не супер спец в формулировках, поэтому последнее может и вообще не возможно и я порю глупость 8-) )
    вот скриншот ошибки

    комментарий от znatok Ne | 1 июня, 2006

  18. Если скриншот не откроется .. убери из адреса .. «www» :)

    комментарий от znatok Ne | 1 июня, 2006

  19. да есть такое, многие жалуются (даже сам пару раз попадал на такое)

    тут не в конфликте скриптов дело — IE падает из-за утечек памяти при переписывании outerHTML… пробую с этим бороться — как только решение найду — выложу сюда.

    комментарий от MiRacLe | 1 июня, 2006

  20. […] Часть II […]

    Уведомление от Я проcто Чудо {вище} » Blog Archive » Flash ActiveX & IE update | 6 июля, 2006


Оставьте комментарий