Angular 模板中的 Javascript 广告

2023-11-26

我正在尝试在 Angular 模板中呈现 Javascript 广告,但它不会显示。当他们将 Javascript 附加到 head 标签时,我找到了一些解决方案,但我希望将广告放置在我的 Html(正文内)中。

这是一个笨蛋:https://plnkr.co/edit/WHhQ95gS5HKSphmmirio

这是一个简单的纯 Html 示例,可以正常工作。

    <html>
    <head>
    </head>
    <body>
    <div class="ad">
       <script src="http://media.affiliatelounge.com/data/nordicbet/ad_js/display_88.js?ad=ad_793270_88.html&amp;size=300x250&amp;clicktag=http://record.affiliatelounge.com/_sVuSoFFh4LK58VwA2IUESrKVVrME-Gsw/1&amp;media=108786&amp;campaign=1"></script>
    </div>
    </body>
    </html>

但是,如果我将 div 添加到 Angular 模板中,它将不会渲染,并且控制台什么也不说。

我在这里投放了一些广告(http://www.odds.nu/erbjudanden),但它们要么是 .gif 要么是 iframe。我希望能够展示 Javascript 广告。它们被添加到 Html 但不会呈现(放置在页面底部)。

$sce 或 $compile 可以帮忙吗?

我的index.html

    <div data-ng-view="" class="mainView"></div>

我的应用程序.js

    $routeProvider.when("/erbjudanden", {
          controller: "offerController",
          templateUrl: "/app/templates/offers.html"
    });

我的优惠.html

    <div class="ad">
       <script src="http://media.affiliatelounge.com/data/nordicbet/ad_js/display_88.js?ad=ad_793270_88.html&amp;size=300x250&amp;clicktag=http://record.affiliatelounge.com/_sVuSoFFh4LK58VwA2IUESrKVVrME-Gsw/1&amp;media=108786&amp;campaign=1"></script>
    </div>

有什么解决办法吗?


如果您检查了该 url 请求的结果(确保 adBlock 已关闭)

https://wlbetclic.adsrv.eacdn.com/S.ashx?btag=a_17172b_14837c_&affid=12824&siteid=17172&adid=14837&c=

你会看到实际的结果

document.write('<script type="text/javascript" src="//wlbetclic.eacdn.com/TrafficOpt/s.5.4.min.js?t=1"></script>');
document.write('<script type="text/javascript" src="//wlbetclic.eacdn.com/wlbetclic/img/js/Affiliate_12824.js?t=20160224"></script>');
//other lines omitted for brevity

所以这个文件正在执行document.write显然这在角度上不起作用,只是因为它们完全不同(即使您可以以某种方式触发摘要循环,您仍然无权修改该脚本文件,因为它是由第 3 方服务器生成并具有自己的变量)

我要做的是 - 制作一个像 ad.html 的页面,就像 index.html 或 404.html 一样,然后从角度(不是作为模板,而是像视图文件)请求这个文件作为具有自定义属性的 iframe src

我将使用自定义 DOM 元素,并使用 jQuery 或 Angular 填充内容,请查看下面的 jQuery 示例

我还需要克鲁克斯/postscribe插件,因为你不能在异步 html 文件中使用 document.write

<!-- create multiple holders -->
<ad-holder url="https://wlbetclic.adsrv.eacdn.com/S.ashx?btag=a_17172b_14837c_&affid=12824&siteid=17172&adid=14837&c="></ad-holder>

<div class="black-widow">
    <!-- with size attributes -->
    <ad-holder url="http://google.com" width="100" height="40"></ad-holder>
</div>

<!-- jQuery population with iframe -->
<script>
    //get all custom elements
    $('ad-holder').each(function(){

        //create iframe placeholder
        var $iframe = $(document.createElement('iframe'));

        //get url of custom element
        var url = $(this).attr('url');

        //request ad.html file with params, currently it's url param
        $iframe.attr('src', 'ad.html?url=' + url);

        //some stylings acceptable here
        $iframe.width('100px');

        //or get styles from custom-element
        var heightValue = $(this).attr('height');
        $iframe.height(heightValue || '50px');

        //rebuild custom element with iframe
        $(this).append($iframe);
    });
</script>

<!-- angular populate with iframe directive -->
<scrip>
    angular.module('app', []).directive('adHolder', function(){
        return {
            restrict: 'E',
            scope: { url: '@' },
            //you could also execute in compile-phase
            link: function(scope, element, attribute){
                var $iframe = angular.element(document.createElement('iframe'));
                $iframe.attr('src', 'ad.html?url=' + scope.url);
                element.html($iframe);
            }
        }
    });
</script>

And ad.html看起来像

<body>
  <div id="ad"></div>
  <script>
    function getQueryVariable(variable) {
      var query = window.location.search.substring(1);
      //for the sake of simplicity we expect only 1 param (url)
      return query.replace('url=', '');
    }
    var adUrl = getQueryVariable('url');
    if (adUrl) 
      postscribe('#ad', '<script src="' + adUrl + '"><\/script>');
    else {
      var $h1 = $(document.createElement('h1'));
      $h1.text('No ad available');
      $(document.body).append($h1);
    }
  </script>
</body>

该解决方案最好的部分是您可以将相同的自定义元素与不同的元素重复使用url任何其他广告的属性

查看 jQuery 实际工作演示

虽然这个演示大量使用了 jQuery,但很容易调整角度版本,我建议你将其作为家庭作业来实现 =)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Angular 模板中的 Javascript 广告 的相关文章

随机推荐

  • 有什么方法可以分析 firestore 数据库吗?

    我的 Firestore 数据库中的实体写入数量非常多 大多数路径的写入权限都受到限制 通过后端服务器使用 admin SDK 完成 只有极少数路径具有写访问权限 特别是仅对已通过身份验证 注册 加入和批准的特定组的用户而言 因此即使滥用的
  • 连接到 Amazon RDS Oracle 实例时如何解决“读取调用减一”错误

    我在 Amazon RDS 实例上运行 Oracle 11GR2 有时我会得到一个IO Error Got minus one from a read call当打电话给DriverManager getConnection getUrl
  • Git 哈希重复

    Git 允许使用以下命令检索提交的哈希值 git rev parse HEAD 这使33b316c or git rev parse short HEAD 这使33b316cbeeab3d69e79b9fb659414af4e7829a32
  • 错误:未找到名称“ngModel”的导出

    构建我的角度项目后 我收到错误 错误 未找到名称 ngModel 的导出 我的 UI 在 Docker 容器中运行 甚至不知道在哪里寻找这个 它在开发中工作正常 发球 有任何想法吗 我有同样的错误 尽管在开发中 事实证明我没有添加表单模块模
  • 如何从 Google Analytics 获取原始日志?

    是否可以从 Google Analytic 获取原始日志 有没有可以从GA生成原始日志的工具 不 您无法获取原始日志 但没有什么可以阻止您将完全相同的数据记录到您自己的 Web 服务器日志中 看看顽童代码并借用它 将以下两行更改为指向您的
  • 如何创建 AND 或 OR 表达式?

    我写了这个 if a 11 b 1 if a 1 AND b 1 但两者都不起作用 我也有同样的问题OR 如何编写包含以下内容的表达式OR or AND You use 对于 和 以及 为 或
  • 如何将 JavaScript onClick 处理程序添加到嵌入的 html 对象?

    我正在尝试将 onClick 处理程序添加到嵌入对象中 处理程序需要执行外部 js 文件中的函数 该文件通过链接到当前 html 文件button svg id buttonEmbed width 95 height 53 type ima
  • keras LSTM 层训练时间太长

    每当我在 Keras 上尝试 LSTM 模型时 似乎由于训练时间过长 该模型无法训练 例如 像这样的模型每步需要 80 秒来训练 def create model self inputs inputs input lstm placehol
  • 基于 TCP 的 WebRTC 媒体?

    我是 WebRTC 新手 我了解了回合服务器 下面的内容用于为 webrtc 应用程序配置基于 TCP 的 Turn 服务器 webrtc 应用程序中的转向服务器配置示例 url turn 192 158 29 39 3478 transp
  • 从十六进制值检测相似的颜色

    有谁知道一种获取两个十六进制颜色值并返回某种索引来说明颜色有多相似的方法 例如 两种黄色色调可能会返回更高的指数 即它们比灰色和黄色更相似 我正在使用 javascript 但我猜这样的东西将是一个独立于语言的公式 算法 可以从以下算法开始
  • 如何在 Mono For Android 中将位图转换为字节数组

    我正在使用 Mono for Android 我想将位图保存到字节数组 所以我可以将它保存到数据库中 在这里搜索我发现了以下代码 ByteArrayOutputStream bos new ByteArrayOutputStream bit
  • Firebase 查询子级的子级是否包含值

    表的结构是 chats gt 随机ID gt gt 参与者 gt gt gt 0 名称1 gt gt gt 1 名称2 gt gt 聊天项目 etc 我想做的是查询聊天表 以查找通过传入的用户名字符串容纳参与者的所有聊天 这是我到目前为止所
  • Kafka高级消费者使用Java API从主题获取所有消息(相当于--from-beginning)

    我正在使用 Kafka 站点上的 ConsumerGroupExample 代码测试 Kafka High Level Consumer 我想检索 Kafka 服务器配置中有关 测试 主题的所有现有消息 查看其他博客 auto offset
  • 在多个 GridViewColumn 中使用通用 DataTemplate

    我有一个显示一些值的 GridView
  • 跨平台方式检测符号链接/连接点?

    在java中 可以通过比较文件的规范路径和绝对路径来检测Unix环境中的符号链接 然而 这个技巧在 Windows 上不起作用 如果我执行 mkdir c foo mklink j c bar 从命令行 然后在java中执行以下几行 Fil
  • 怪异模式与 2011 年相关吗?

    随着IE9 FF4 不断更新的chrome等所有最新的浏览器 我们还需要怪异模式吗 如果有的话有什么用处 在什么场景下 Quirks 模式旨在允许 很多 较旧的网站在 相对 较新的浏览器中运行 新的开发永远不应该在 Quirks 模式下进行
  • ListView 图像的 onClick 侦听器 - Android

    我有一个ListView右侧有图像 我想表演一个onClick通过单击图像上的侦听器事件ListView 请参阅图片以供参考 我知道基本的OnClick监听器实现 但这对我来说似乎有点棘手 P 忘了说了 点击实际ListView将启动一项新
  • 使用 DbContext.Database.SqlQuery 在 EntityFramework 中进行预加载

    在 EF 4 中 我可以通过编写 sql 来预先加载导航属性吗DbContext Database SqlQuery or DbContext Set
  • 在 Mac OS 10.11 (El Capitan) 上使用 pfctl 转发端口

    我目前正在测试我的开发环境是否可以在即将推出的新 Mac OS 10 11 上运行 以及是否可以在发布后立即升级 在我的测试机器上 我当前正在运行 Beta Preview 3 一切似乎都运行良好 我只能得到pfctl转发我的端口 我使用
  • Angular 模板中的 Javascript 广告

    我正在尝试在 Angular 模板中呈现 Javascript 广告 但它不会显示 当他们将 Javascript 附加到 head 标签时 我找到了一些解决方案 但我希望将广告放置在我的 Html 正文内 中 这是一个笨蛋 https p