我正在尝试使用https://github.com/zeroclipboard/ZeroClipboard将内容复制到剪贴板。它似乎是一个很好的库,但是当我复制按钮(闪光灯)悬停时,我收到错误'错误调用NPObject上的方法。'。
似乎是一个闪存安全问题,但我能够加载Flash内容。
有什么想法吗?
答案 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”提供的。 刚刚渲染了来自同一子域的内容。
感谢。
答案 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链接
要
有关详细信息,请查看以下文档中的Cross-Protocol Limitations
主题
http://www.kellyjandrews.com/zc/guides/limitations/protocol/