【问题标题】:Bizarre XML access behavior in .NET WebBrowser between Action Script 2 and Action Script 3.NET WebBrowser 中 Action Script 2 和 Action Script 3 之间的奇怪 XML 访问行为
【发布时间】:2011-09-30 17:26:26
【问题描述】:

我开始讨论 SWF 文件在 .NET WebBrowser 控件中呈现时未加载 XML 数据文件的问题(请参阅 here

进一步的调查表明,如果使用 Action Script 2(通过 XML.load())加载 XML 数据文件,它就可以工作。但如果有问题的 SWF 文件使用 Action Script 3(我认为是通过 URLLoader.load()),则不会加载数据文件,除非 XML 文件与 HTML 文件位于同一文件夹中。

如果任一 SWF 文件是使用 Internet Explorer 9 加载的,则一切正常。

关于 SWF + Action Script 3 + .NET WebBrowser 的性能,是否存在任何已知问题(对于 Internet 搜索引擎来说显然隐藏得很好,因为我们一直在解决这些问题)?

奇怪的是,有办法通过移动文件来强制 AS3 解决方案工作(这不是我们想要做的真正的选择),并且 Internet Explorer 9 没有问题,但是 WebBrowser 控件(每个人都说“只是 IE 的包装器”)的工作方式不同。

任何帮助表示赞赏。

【问题讨论】:

  • 如果您升级到 SWFObject 并嵌入,为什么您不会遇到这些跨浏览器问题。那么问题将 99% 消失。

标签: .net flash actionscript-3 actionscript-2 webbrowser-control


【解决方案1】:

实际上,这不是跨浏览器的问题——SWFObject 在这方面并不是灵丹妙药。我们最初在使用 SWFObject 时遇到了这个问题,并将其从等式中删除以验证它是否特定于 C# WebBrowser 控件(而不是任何实际特定的浏览器)。

问题与将 BASE 参数信息传递给 C# 控件有关。在 IE、Firefox 等中运行时似乎成功通过。只有在 C# WebBrowser 控件的上下文中,此数据似乎才会丢失。并且,具体来说,仅适用于 AS3 swf 而不是 AS2 swf。使用每种情况的标准加载操作,只需读取一个文件,其中在主机 HTML 页面中指定基本路径,使用最基本的嵌入方法(没有特殊的框架或 API),该信息(基本参数数据)显然是在 AS3 文件的情况下,Flash 不会接收到。它似乎被 AS2 文件一致地接收和处理,并且可以找到该文件。

这很令人烦恼,而且我们无法找到更多有问题的人的帖子,这有点令人惊讶。无论如何,它本身似乎不是一个跨浏览器的问题。相对于 BASE 参数,所有浏览器都按预期工作。该问题仅在使用 C# WebBrowser 控件的情况下表现出来。好像它不支持较新的 AS3 引擎或类似的东西。

无论如何,我希望这能稍微解决这个问题......

【讨论】:

  • 请注意,以上内容并非作为答案,而是对 The_asMan 的后续评论以及对 GuyWithDogs 问题的澄清,我看到...谢谢!
【解决方案2】:

我将为这个肮脏的传奇添加一个总结......

通过与 Microsoft 和 Adob​​e 的讨论,我们确定这确实是 WebBrowser 控件中使用的 Flash ActiveX 控件的问题。 Adobe 将此描述为“不受支持的用例”,这就是故事的结尾。不会有“修复”。我也能够使用 ActiveX WebBrowser 控件复制该问题,因此它不是专门的 .NET 事物。而且,如前所述,正在使用的 ActionScript 版本也会影响成功或失败。

从长远来看,我们所做的是在加载期间动态调整整个 HTML 文档中的 <base> 标记,并将引用指向包含 SWF 和 XML 文件的文件夹。看起来很笨拙,但它确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多