Flash SWF-файл не может найти XML-файл данных при загрузке в элемент управления WebBrowser (но работает в IE9) - PullRequest
0 голосов
/ 22 сентября 2011

Немного подробного объяснения ниже, с, надеюсь, кратким кратким описанием вопроса здесь:

Может ли элемент управления .NET WebBrowser (64-разрядная версия Win7, IE9, текущая версия Flash 10.3.183.7) загружать SWF-файл в тег , где SWF-файл находится в отдельной папке, которая также содержит файл данных XML таким образом, чтобы SWF-файл загружался и отображал данные XML?

ОБНОВЛЕНИЕ : Добавлена ​​дополнительная информация ниже, основанная на некоторых дальнейших экспериментах ...

Гори, деталь:

Это мучило меня на пару дней. Учтите следующее:

C:\dev\wb.exe - программа, использующая веб-браузер для отображения локального SWF-файла с диска

c:\data\mySWF.swf - SWF-файл, который я хочу воспроизвести c:\data\myData.xml - файл с данными, которые ищет mySWF.swf

C:\html\index.html - HTML-файл, загруженный wb.exe. Этот файл имеет тег для настройки элемента управления Flash ActiveX, воспроизводящего c: \ data \ mySWF.swf.

Первоначально, это началось с использования swfobject.js, и когда я не увидел ожидаемых результатов, я продолжал упрощаться, пока не дошел до того, что у меня нет ничего, кроме HTML-файла без дополнительных библиотеки.

Если я загружаю index.html в IE9, это работает. Я вижу, что SWF-файл воспроизводится с данными из загруженного XML-файла.

Когда я запускаю wb.exe, он загружает файл C:\html\index.html, и я вижу воспроизведение SWF. Но поля данных пусты. Если я копирую index.html в C:\data\index.html и загружаю его в wb.exe, ТОГДА я вижу свои данные.

Мой файл index.html:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <style type="text/css">
* {
   width: 100%;
   height: 100%;
   margin: 0;
   padding: 0;
   overflow: hidden;
}
      </style>
</head>
    <body MARGINWIDTH="0" MARGINHEIGHT="0" LEFTMARGIN="0" RIGHTMARGIN="0" TOPMARGIN="0" BOTTOMMARGIN="0"> 
        <object  type="application/x-shockwave-flash" width=100%" height="100%" id='player1' name='player1'> 
            <param name='movie' value='C:\data\mySWF.swf'>
            <param name='allowfullscreen' value='true'>
            <param name='allowscriptaccess' value='always'>
            <param name='base' value='C:\data\'>
            <param name='menu' value='false'>
            <param name='quality' value='best'>
            <param name='scale' value='exactfit'>
        </object>
    </body>
</html>

Параметр base, казалось, был частью того, чтобы заставить это работать, но я заблуждаюсь относительно того, почему (или могу ли я) заставить элемент управления ActiveX Flash работать так, как мне нужно, без необходимости загружать HTML-файл из той же папки, что и SWF-файл.

ОБНОВЛЕНИЕ: Если я помещаю файл myData.xml в папку C: \ html и загружаю из C: \ html \ index.html, я получаю значения данных в SWF. Таким образом, похоже, что плагин Flash использует путь к файлу index.html, а НЕ базовый параметр.

ОБНОВЛЕНИЕ: Мы выяснили, в результате дополнительных экспериментов, что эта проблема НЕ возникает, если SWF-файл использует Action Script 2 (AS2) для обработки XML (через XML.load ()), но SWF-файл файл с использованием Action Script 3 (AS3) (через URLLoader.load ()) НЕ работает должным образом. Это становится еще более странным.

Я ценю ваше терпение, если вы застряли так далеко, и, надеюсь, вы сможете рассказать мне о моей проблеме.

Спасибо.

1 Ответ

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

В качестве продолжения моего собственного вопроса, нет хорошего решения.

Мы обошли проблему, используя jQuery, чтобы настроить тег <base href=""> в основном HTML, чтобы ссылаться на папку сSWF и XML-файл, каждый раз, когда мы загружаем новый SWF-файл.Это работает, но никто не очень доволен этим.

Мы поговорили с Microsoft, а затем с Adobe.Adobe называет использование Flash в элементе управления .NET WebBrowser «неподдерживаемым сценарием использования» и не хочет иметь ничего общего с этой проблемой.

...