Маскирование плагина (или апплета) для отображения HTML-контента поверх него в Chrome на Mac - PullRequest
2 голосов
/ 20 июля 2011

Для всех других браузеров, которые я пробовал как в Windows, так и в MacOSX (включая Chrome под Windows), использование «iframe shim» работает нормально. Тем не менее, я не смог заставить шайбы iframe работать над нашим плагином в Chrome на Mac.

После того, как Гуглил проблему и провел некоторое тестирование, она, похоже, зависит от объекта. Я нашел пример использования StreetView (флэш-объект), который работает, и другой пример, использующий Java-апплет, который не работает.

Некоторые ссылки:

Вот описание метода: http://www.oratransplant.nl/2007/10/26/using-iframe-shim-to-partly-cover-a-java-applet/

Этот пример с использованием Java-апплета взят из приведенной выше статьи: http://www.oratransplant.nl/files/iframe_shim.html

А вот рабочая версия с использованием Streetview: http://gmaps -samples.googlecode.com / svn / trunk / streetview / iframeshim.html

При проверке (и редактировании) элементов в Chrome и копировании объектов между двумя примерами страниц создается впечатление, что объект флэш-памяти просто позволяет прокладывать iframe (в Chrome на Mac), а Java-апплет - нет.

В нашем случае мы используем собственный плагин, построенный с Firebreath.

Возможно, мне нужно внедрить дополнительную функциональность в наш плагин, имитируя то, что делает Flash, но это может быть вызвано ошибкой в ​​сборке Chrome для Mac.

Кто-нибудь может помочь? Мы действительно хотим иметь возможность отображать HTML-элементы поверх нашего плагина, и программа iframe shim работает практически на всех комбинациях браузера и ОС!

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Отсутствие компоновки - это известная ошибка в Mac Chrome с любым плагином, использующим Core Animation или Invalidating Core Animation. Это будет решено в некоторых будущих версиях - теоретически вам никогда не понадобится взломать iframe на Mac, а плагины всегда должны правильно составляться. Если вам интересно, вы можете определить, поддерживается ли динамическая компоновка Core Animation в вашем плагине, используя NPN_GetValue со значением 74656 (см. WKNVSupportsCompositingCoreAnimationPluginsBool в источнике WebKit; это скоро должно быть добавлено к формальной спецификации NPAPI, но значение не будет изменить, так что вы можете жестко закодировать его сейчас, и когда Chrome его поддержит, он начнет возвращать true).

В общем случае взлом iframe должен работать в последних версиях Chrome (какую версию вы тестируете?), Но есть некоторые ошибки, когда он не замечается, пока страница не будет перекомпонована, поэтому вы можете захотеть поиграй с этим.

Обратите внимание, что ваш пример Streetview не является допустимым тестом для Mac Chrome, потому что он использует wmode = opaque, что означает, что он использует режим CG, а не режим CA, и, следовательно, композитинг работает полностью независимо от хака iframe.

1 голос
/ 20 июля 2011

Какой метод рисования вы используете?Вам не нужно использовать iframe над плагином на Mac, потому что все рисование без окон, если вы не делаете странные вещи, которые я не ожидал бы сделать возможными с Chrome (например, создание контекста opengl поверх контекста coregraphics или quickdraw)).Если бы вы делали что-то подобное, вероятно, не было бы ничего, что вы могли бы сделать.

Один простой способ - просто изменить размер плагина до 1x1, чтобы эффективно «спрятать» его.

...