微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – AngularJS和adsense

我想在我的角度应用程序中添加Google Adsense,我找到了一个工作示例 here.

问题是我无法在模板中添加html,因为我在脚本标记中加载模板(< script type =“text / ng-template”....),adsense的脚本标记会破坏模板. 我尝试将模板移动到指令:

app.directive('Adsense',function() {
  return {
    restrict: 'A',transclude: true,replace: true,template: '<div><script type="text/javascript" async="async" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>' +
              '<ins class="adsbygoogle" style="display: inline-block; width: 234px; height: 60px;" ' +
              'data-ad-client="ca-pub-xxxxx" data-ad-slot="xxxxx"></ins>' +
              '<script type="text/javascript">(adsbygoogle = window.adsbygoogle || []).push({});</script></div>',link: function ($scope,element,attrs) {}
  }
})

但是当指令设置时,javascript不会被执行(这似乎是想要的行为AngularJS template. Inner JS not execute).还有另外一种方法吗?

解决方法

谷歌搜索https://gist.github.com/endorama/7369006
/*global angular */
(function (ng) {
  'use strict';

  var app = ng.module('ngLoadScript',[]);

  app.directive('script',function() {
    return {
      restrict: 'E',scope: false,link: function(scope,elem,attr) {
        if (attr.type=='text/javascript-lazy') {
          var code = elem.text();
          var f = new Function(code);
          f();
        }
      }
    };
  });

}(angular));

然后在您的模板上:

<script type="text/javascript-lazy">
  console.log(true);
</script>

使用这样的东西,或修改加载一些指定文件或使用https://github.com/ocombe/ocLazyLoad

有很多方法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐