ZeroClipboard JavaScript库抛出Uncaught Error:错误调用NPObject上的方法

时间:2013-05-23 07:52:46

标签: flash zeroclipboard

我正在尝试使用https://github.com/zeroclipboard/ZeroClipboard将内容复制到剪贴板。它似乎是一个很好的库,但是当我复制按钮(闪光灯)悬停时,我收到错误'错误调用NPObject上的方法。'

似乎是一个闪存安全问题,但我能够加载Flash内容。

有什么想法吗?

6 个答案:

答案 0 :(得分:4)

在1.1.7之后的版本中,如果您在托管页面之外的其他域上托管“ZeroClipboard.swf”,则需要将“allowScriptAccess”设置为“alwaysDomain”以外的“always”,“trustedDomains”也应包含当前页面域。

ZeroClipboard.setDefaults( { moviePath:'http://YOURSERVER/path/ZeroClipboard.swf',allowScriptAccess: "always",trustedDomains: location.hostname } );

答案 1 :(得分:2)

我明白了。这是一个同源的安全模型臀位。  我的网络应用子域名是“WWW”,但Flash内容是从“CDN”提供的。   刚刚渲染了来自同一子域的内容。

了解更多@ https://developer.mozilla.org/en-US/docs/Gecko_Plugin_API_Reference/Scripting_plugins?redirectlocale=en-US&redirectslug=Gecko_Plugin_API_Reference%3AScripting_plugins#NPObject

感谢。

答案 2 :(得分:1)

请添加"trustedDomains : [*]"

我不知道如何解决问题。

var clip = new ZeroClipboard(document.getElementById("copy-button"), {
    trustedDomains: [ "*" ],
    moviePath: "http://assets.dev.alipay.net/gallery/zeroclipboard/1.2.2/ZeroClipboard.swf"
});

有关详情:https://github.com/zeroclipboard/zeroclipboard/issues/103

答案 3 :(得分:0)

昨天我刚刚从1.0.7升级到1.1.7,我遇到了同样的问题...我想知道他们是否因为昨天的提交而破坏了一些东西,因为这是我见过的唯一一个帖子关于这个问题。

〜赛斯

答案 4 :(得分:0)

如果这有助于其他任何人,我设法让这个错误消失了我的设置(在http://localhost:3000本地开发并从cdnjs加载Flash文件。CoffeeScript:

if ZeroClipboard?
    ZeroClipboard.setDefaults
        moviePath: "//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.1.7/ZeroClipboard.swf"
        trustedOrigins: [window.location.protocol + "//" + window.location.host]
        trustedDomains: window.location.hostname
        allowScriptAccess: "always"

请注意trustedDomains是关键所在。虽然它在1.1.7中被认为已弃用,但删除它(至少对我来说)会导致可怕的Error calling method on NPObject错误返回。

答案 5 :(得分:0)

否则您的域名不受ssl保护,即您的协议为http而不是https,因此您应该更改您的swf链接

  

https://davidwalsh.name/demo/ZeroClipboard.swf

  

http://davidwalsh.name/demo/ZeroClipboard.swf

有关详细信息,请查看以下文档中的Cross-Protocol Limitations主题

http://www.kellyjandrews.com/zc/guides/limitations/protocol/