【问题标题】:Cannot implement ZeroClipboard copy to clipboard directive in angular 1.2.3无法在角度 1.2.3 中实现 ZeroClipboard 复制到剪贴板指令
【发布时间】:2013-12-09 01:32:45
【问题描述】:
app.directive('copyPost', ['$window', '$filter', 'ZeroClipboardPath', function ($window, $filter, ZeroClipboardPath) {
    return {
      scope: {
        postFn: '&',
      },
      restrict: 'A',
      link: function (scope, element, attrs) {
        ZeroClipboardPath = ZeroClipboardPath || '//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.1.7/ZeroClipboard.min.js';
        var clip = new ZeroClipboard( angular.element(element), {
          moviePath: ZeroClipboardPath,
          trustedDomains: ['*'],
          allowScriptAccess: "always"          
        });
        clip.on('mousedown', function(client) {
          console.log('shit works');
          scope.postFn().then(function(data){
            client.setText(data.data[0].external_url);
          });  

        });
      }
    }
  }]);

postFn 得到下面的函数,它返回一个 HTTP 承诺(在没有插件的情况下测试,并且从函数返回正确的值到

jobsServ.shareObject = function(object, identifier, data){
        if(object == 'job')
            return $http.post(utils.getBaseUrl() + '/jobs/' + identifier + '/share', data, utils.getConfig());
        else if(object == 'company')
            return $http.post(utils.getBaseUrl() + '/companies/' + identifier + '/share', data, utils.getConfig());
    });

ZeroCLipboard 脚本:

<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.1.7/ZeroClipboard.min.js"></script>

问题:没有一个 ZeroCLipboard 事件没有触发。

已经尝试过以下操作: 将优先级设置为 0 以上(最高 100), 一个没有广告的隐身窗口(添加块等), 使用脚本和 swf 的本地实例,以及以下设置:

尝试在元素上使用 angular.element() 和 $(),甚至尝试使用带有显式 id 的 jquery css 选择器,但现在幸运了。 有什么想法吗?

【问题讨论】:

    标签: angularjs angularjs-directive zeroclipboard


    【解决方案1】:

    我不认为这是一个 Angular 问题,所以我建议保留关于您打开的 GitHub 问题 (#283) 的主要讨论,而不是将其分散得太细……否则 SO 上的人将会遗漏了 GitHub 问题的很多细节。

    查看我关于 GH 问题的最新更新,了解已识别的潜在错误。特别是:

    如果您的 ZeroClipboardPath 参数为空,则回退将不起作用,因为您将 moviePath 指向 JS 文件而不是 Flash SWF:

    ZeroClipboardPath = ZeroClipboardPath || '//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.1.7/ZeroClipboard.min.js';

    应该是:

    ZeroClipboardPath = ZeroClipboardPath || '//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.1.7/ZeroClipboard.swf';

    【讨论】:

    • 这个问题已经解决了,谢谢,我显然没有注意,我的错。现在我面临一个不同的问题,一个不太明显的问题,我相信:Uncaught Error: Error calling method on NPObject.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-26
    • 2016-09-08
    • 1970-01-01
    相关资源
    最近更新 更多