SoundManager2 SWF加载问题

时间:2012-05-09 15:59:45

标签: javascript flash code-access-security

尝试从我们的CDN加载Soundmanager2的SWF文件。我假设我遇到了跨域闪存问题。有人这样做过吗?它甚至可能吗?

这就是我正在尝试的......

var allowxdomainscripting = true;
var xdomain = "*";
soundManager.url = 'http://cdn.mycompany.com/inc/soundmanager2.swf';

在文档中有一个非常模糊的引用,但它很模糊......

http://www.schillmania.com/projects/soundmanager2/doc/generated/src/SoundManager2_AS3.html

任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:3)

我也曾遇到过这个问题。 SoundManager2现在附带了swf文件的跨域版本。

它们是用swf / soundmanager2_flash_xdomain.zip压缩的。

https://github.com/scottschiller/SoundManager2/tree/master/swf

只需解压缩并替换为SoundManager2提供的标准.swf文件,您的问题就会消失。

答案 1 :(得分:3)

非常感谢你!

在浪费了几个小时试图让SM2 SWF嵌入工作之后,我偶然发现了这个答案。

我要“复活”这个以添加一些关键字,以便Google为这个答案编制索引......也许下一个试图在跨域环境中嵌入SoundManager2 SWF的人会比我做得更快一点: )

我在闪存初始化时遇到的错误是:在NPObject上调用错误方法

在JS方面,这是打破一切的代码:

// attempt to talk to Flash
flash._externalInterfaceTest(false);     <- KABOOM!

NPObject错误可能有很多含义,但通常情况下(在我们的环境中)意味着:您试图通过JS在托管在不同域上的Flash影片上调用ExternalInterface。

过了一会儿,我弹出了SoundManager2 ActionScript 3代码,看到了这个:

public var allow_xdomain_scripting:Boolean = false;
public var xdomain:String = "*";

[... other stuff ...]

if (allow_xdomain_scripting && xdomain) {
    Security.allowDomain(xdomain);
    version_as += ' - cross-domain enabled';
}

当然,这意味着您可能正在使用的电影(无论是否调试)将无法从其他域(CDN或其他任何域)访问。

解决方法是@ amlutz160的答案 - ,以使用swf / soundmanager2_flash_xdomain.zip中包含的文件,这些文件使用allow_xdomain_scripting = true 进行编译。

发布这个非常尴尬,解决方案显而易见,但我失去了相当多的时间和AFAIK这个神秘的zip文件的内容没有记录在任何地方(我找到了{ {3}})。

PS:我将这个答案转发给tangential mention on SM2 forums所以也许他可以稍微更新一下SoundManager2文档:P

问候!