Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在AngularJS视图中在移动Web中显示本机广告时出现问题_Javascript_Html_Angularjs_Facebook Audience Network - Fatal编程技术网

Javascript 在AngularJS视图中在移动Web中显示本机广告时出现问题

Javascript 在AngularJS视图中在移动Web中显示本机广告时出现问题,javascript,html,angularjs,facebook-audience-network,Javascript,Html,Angularjs,Facebook Audience Network,在我的AngularJS应用程序中,我试图将Facebook原生网络广告添加到我的一个视图中。我按照概述的步骤生成必要的HTML代码段,并将其添加到我的视图中 我的应用程序正在使用ui路由器解析路由。访问包含此代码段的路由/视图时,不会显示FB ad,也不会调用任何回调(onAdLoaded或onAdError) Facebook生成的HTML片段(添加到视图中): <div style="display:none; position: relative;"> <ifr

在我的AngularJS应用程序中,我试图将Facebook原生网络广告添加到我的一个视图中。我按照概述的步骤生成必要的HTML代码段,并将其添加到我的视图中

我的应用程序正在使用ui路由器解析路由。访问包含此代码段的路由/视图时,不会显示FB ad,也不会调用任何回调(onAdLoaded或onAdError)

Facebook生成的HTML片段(添加到视图中):

<div style="display:none; position: relative;">
    <iframe style="display:none;"></iframe>
    <script type="text/javascript">
        var data = {
            placementid: 'xxxxxxxxxxx_xxxxxxxx',
            format: 'native',
            testmode: true,
            onAdLoaded: function (element) {
                console.log('Audience Network ad loaded');
                element.style.display = 'block';
            },
            onAdError: function (errorCode, errorMessage) {
                console.log('Audience Network error (' + errorCode + ') ' + errorMessage);
            }
        };
        (function (w, l, d, t) {
            var a = t();
            var b = d.currentScript || (function () {
                        var c = d.getElementsByTagName('script');
                        return c[c.length - 1];
                    })();
            var e = b.parentElement;
            e.dataset.placementid = data.placementid;
            var f = function (v) {
                try {
                    return v.document.referrer;
                } catch (e) {
                }
                return '';
            };
            var g = function (h) {
                var i = h.indexOf('/', h.indexOf('://') + 3);
                if (i === -1) {
                    return h;
                }
                return h.substring(0, i);
            };
            var j = [l.href];
            var k = false;
            var m = false;
            if (w !== w.parent) {
                var n;
                var o = w;
                while (o !== n) {
                    var h;
                    try {
                        m = m || (o.$sf && o.$sf.ext);
                        h = o.location.href;
                    } catch (e) {
                        k = true;
                    }
                    j.push(h || f(n));
                    n = o;
                    o = o.parent;
                }
            }
            var p = l.ancestorOrigins;
            if (p) {
                if (p.length > 0) {
                    data.domain = p[p.length - 1];
                } else {
                    data.domain = g(j[j.length - 1]);
                }
            }
            data.url = j[j.length - 1];
            data.channel = g(j[0]);
            data.width = screen.width;
            data.height = screen.height;
            data.pixelratio = w.devicePixelRatio;
            data.placementindex = w.ADNW && w.ADNW.Ads ? w.ADNW.Ads.length : 0;
            data.crossdomain = k;
            data.safeframe = !!m;
            var q = {};
            q.iframe = e.firstElementChild;
            var r = 'https://www.facebook.com/audiencenetwork/web/?sdk=5.3';
            for (var s in data) {
                q[s] = data[s];
                if (typeof(data[s]) !== 'function') {
                    r += '&' + s + '=' + encodeURIComponent(data[s]);
                }
            }
            q.iframe.src = r;
            q.tagJsInitTime = a;
            q.rootElement = e;
            q.events = [];
            w.addEventListener('message', function (u) {
                if (u.source !== q.iframe.contentWindow) {
                    return;
                }
                u.data.receivedTimestamp = t();
                if (this.sdkEventHandler) {
                    this.sdkEventHandler(u.data);
                } else {
                    this.events.push(u.data);
                }
            }.bind(q), false);
            q.tagJsIframeAppendedTime = t();
            w.ADNW = w.ADNW || {};
            w.ADNW.Ads = w.ADNW.Ads || [];
            w.ADNW.Ads.push(q);
            w.ADNW.init && w.ADNW.init(q);
        })(window, location, document, Date.now || function () {
                    return +new Date;
                });
    </script>
    <script type="text/javascript" src="https://connect.facebook.net/en_US/fbadnw.js" async></script>
    <style>
        .thirdPartyRoot {
            background-color: white;
            color: #444;
            border: 1px solid #ccc;
            border-left: 0;
            border-right: 0;
            font-family: sans-serif;
            font-size: 14px;
            line-height: 16px;
            width: 320px;
            text-align: left;
            position: relative;
        }

        .thirdPartyMediaClass {
            width: 320px;
            height: 168px;
            margin: 12px 0;
        }

        .thirdPartySubtitleClass {
            font-size: 18px;
            -webkit-line-clamp: 1;
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            height: 16px;
            -webkit-box-orient: vertical;
        }

        .thirdPartyTitleClass {
            padding-right: 12px;
            line-height: 18px;
            -webkit-line-clamp: 2;
            overflow: hidden;
            text-overflow: ellipsis;
            display: -webkit-box;
            height: 36px;
            -webkit-box-orient: vertical;
        }

        .thirdPartyCallToActionClass {
            background-color: #416BC4;
            color: white;
            border-radius: 4px;
            padding: 6px 20px;
            float: right;
            text-align: center;
            text-transform: uppercase;
            font-size: 11px;
        }

        .fbDefaultNativeAdWrapper {
            font-size: 12px;
            line-height: 14px;
            margin: 12px 0;
            height: 36px;
            vertical-align: top;
        }
    </style>
    <div class="thirdPartyRoot">
        <a class="fbAdLink">
            <div class="fbAdMedia thirdPartyMediaClass"></div>
            <div class="fbAdSubtitle thirdPartySubtitleClass"></div>
            <div class="fbDefaultNativeAdWrapper">
                <div class="fbAdCallToAction thirdPartyCallToActionClass"></div>
                <div class="fbAdTitle thirdPartyTitleClass"></div>
            </div>
        </a>
    </div>
</div>

风险值数据={
placementid:'XXXXXXXXXX uXXXXXXXX',
格式:“本机”,
testmode:true,
onAdLoaded:函数(元素){
console.log(“观众网络广告加载”);
element.style.display='block';
},
onAdError:函数(错误代码、错误消息){
log('观众网络错误('+errorCode+')'+errorMessage);
}
};
(功能(w、l、d、t){
var a=t();
var b=d.currentScript | |(函数(){
var c=d.getElementsByTagName('script');
返回c[c.length-1];
})();
var e=b.parentElement;
e、 dataset.placementid=data.placementid;
var f=函数(v){
试一试{
返回v.document.referer;
}捕获(e){
}
返回“”;
};
var g=函数(h){
变量i=h.indexOf('/',h.indexOf('://')+3;
如果(i==-1){
返回h;
}
返回h.子串(0,i);
};
var j=[l.href];
var k=假;
var m=假;
如果(w!==w.parent){
var n;
VarO=w;
而(o!==n){
var h;
试一试{
m=m | |(o.$sf&&o.$sf.ext);
h=o.location.href;
}捕获(e){
k=真;
}
j、 推(h | | f(n));
n=o;
o=o.父母;
}
}
var p=l.1;
如果(p){
如果(p.length>0){
data.domain=p[p.length-1];
}否则{
data.domain=g(j[j.length-1]);
}
}
data.url=j[j.length-1];
data.channel=g(j[0]);
data.width=screen.width;
data.height=screen.height;
data.pixelratio=w.devicePixelRatio;
data.placementindex=w.ADNW&&w.ADNW.Ads?w.ADNW.Ads.length:0;
data.crossdomain=k;
data.safeframe=!!m;
var q={};
q、 iframe=e.firstElementChild;
var r='1https://www.facebook.com/audiencenetwork/web/?sdk=5.3';
用于(数据中的var s){
q[s]=数据[s];
if(数据类型)!=‘功能’{
r+='&'+s+'='+编码器组件(数据);
}
}
q、 iframe.src=r;
q、 tagJsInitTime=a;
q、 根元素=e;
q、 事件=[];
w、 addEventListener(“消息”,函数(u){
if(u.source!==q.iframe.contentWindow){
返回;
}
u、 data.receivedTimestamp=t();
如果(此.sdkEventHandler){
这是sdkEventHandler(美国数据);
}否则{
this.events.push(u.data);
}
}.bind(q),false);
q、 tagJsIframeAppendedTime=t();
w、 ADNW=w.ADNW | |{};
w、 ADNW.Ads=w.ADNW.Ads | |[];
w、 ADNW.Ads.push(q);
w、 ADNW.init和&w.ADNW.init(q);
})(窗口、位置、文档、Date.now | |函数(){
返回+新日期;
});
第三方{
背景色:白色;
颜色:#444;
边框:1px实心#ccc;
左边框:0;
右边界:0;
字体系列:无衬线;
字体大小:14px;
线高:16px;
宽度:320px;
文本对齐:左对齐;
位置:相对位置;
}
.第三方二级{
宽度:320px;
高度:168px;
边际:12px0;
}
.第三方子类{
字号:18px;
-webkit线夹:1个;
溢出:隐藏;
文本溢出:省略号;
显示:-网络工具包盒;
高度:16px;
-网络工具包盒方向:垂直;
}
.三等舱{
右侧填充:12px;
线高:18px;
-webkit线夹:2个;
溢出:隐藏;
文本溢出:省略号;
显示:-网络工具包盒;
高度:36px;
-网络工具包盒方向:垂直;
}
.第三方CallToAction类{
背景色:#416BC4;
颜色:白色;
边界半径:4px;
填充:6px 20px;
浮动:对;
文本对齐:居中;
文本转换:大写;
字体大小:11px;
}
.FBDefaultNativeAvrapper{
字体大小:12px;
线高:14px;
边际:12px0;
高度:36px;
垂直对齐:顶部;
}

我能够通过编辑FB提供的样板代码来解决这个问题。简言之,最重要的是
<script type="text/javascript" src="https://connect.facebook.net/en_US/fbadnw.js" async></script>
    <!DOCTYPE html>
    <html ng-app="kcl-app">
    <head>
        <base href="/">
        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
        <title ng-bind="pageTitle"></title>
    </head>
    <body>

    <!-- ui-router view -->
    <div ui-view></div>

 <!-- FB Begin -->
    <div class="fb-native">
        <div style="display:none; position: relative;">
            <iframe style="display:none;"></iframe>
            <script type="text/javascript">
                var data = {
                    placementid: 'xxxxxxxxxxx_xxxxxxxx',
                    format: 'native',
                    testmode: true,
                    onAdLoaded: function (element) {
                        console.log('Audience Network ad loaded');
                        element.style.display = 'block';
                    },
                    onAdError: function (errorCode, errorMessage) {
                        console.log('Audience Network error (' + errorCode + ') ' + errorMessage);
                    }
                };
                (function (w, l, d, t) {
                    var a = t();
                    var b = d.currentScript || (function () {
                                var c = d.getElementsByTagName('script');
                                return c[c.length - 1];
                            })();
                    var e = b.parentElement;
                    e.dataset.placementid = data.placementid;
                    var f = function (v) {
                        try {
                            return v.document.referrer;
                        } catch (e) {
                        }
                        return '';
                    };
                    var g = function (h) {
                        var i = h.indexOf('/', h.indexOf('://') + 3);
                        if (i === -1) {
                            return h;
                        }
                        return h.substring(0, i);
                    };
                    var j = [l.href];
                    var k = false;
                    var m = false;
                    if (w !== w.parent) {
                        var n;
                        var o = w;
                        while (o !== n) {
                            var h;
                            try {
                                m = m || (o.$sf && o.$sf.ext);
                                h = o.location.href;
                            } catch (e) {
                                k = true;
                            }
                            j.push(h || f(n));
                            n = o;
                            o = o.parent;
                        }
                    }
                    var p = l.ancestorOrigins;
                    if (p) {
                        if (p.length > 0) {
                            data.domain = p[p.length - 1];
                        } else {
                            data.domain = g(j[j.length - 1]);
                        }
                    }
                    data.url = j[j.length - 1];
                    data.channel = g(j[0]);
                    data.width = screen.width;
                    data.height = screen.height;
                    data.pixelratio = w.devicePixelRatio;
                    data.placementindex = w.ADNW && w.ADNW.Ads ? w.ADNW.Ads.length : 0;
                    data.crossdomain = k;
                    data.safeframe = !!m;
                    var q = {};
                    q.iframe = e.firstElementChild;
                    var r = 'https://www.facebook.com/audiencenetwork/web/?sdk=5.3';
                    for (var s in data) {
                        q[s] = data[s];
                        if (typeof(data[s]) !== 'function') {
                            r += '&' + s + '=' + encodeURIComponent(data[s]);
                        }
                    }
                    q.iframe.src = r;
                    q.tagJsInitTime = a;
                    q.rootElement = e;
                    q.events = [];
                    w.addEventListener('message', function (u) {
                        if (u.source !== q.iframe.contentWindow) {
                            return;
                        }
                        u.data.receivedTimestamp = t();
                        if (this.sdkEventHandler) {
                            this.sdkEventHandler(u.data);
                        } else {
                            this.events.push(u.data);
                        }
                    }.bind(q), false);
                    q.tagJsIframeAppendedTime = t();
                    w.ADNW = w.ADNW || {};
                    w.ADNW.Ads = w.ADNW.Ads || [];
                    w.ADNW.Ads.push(q);
                    w.ADNW.init && w.ADNW.init(q);
                })(window, location, document, Date.now || function () {
                            return +new Date;
                        });
            </script>
            <script type="text/javascript" src="https://connect.facebook.net/en_US/fbadnw.js" async></script>
            <style>
                .thirdPartyRoot {
                    background-color: white;
                    color: #444;
                    border: 1px solid #ccc;
                    border-left: 0;
                    border-right: 0;
                    font-family: sans-serif;
                    font-size: 14px;
                    line-height: 16px;
                    width: 320px;
                    text-align: left;
                    position: relative;
                }

                .thirdPartyMediaClass {
                    width: 320px;
                    height: 168px;
                    margin: 12px 0;
                }

                .thirdPartySubtitleClass {
                    font-size: 18px;
                    -webkit-line-clamp: 1;
                    overflow: hidden;
                    text-overflow: ellipsis;
                    display: -webkit-box;
                    height: 16px;
                    -webkit-box-orient: vertical;
                }

                .thirdPartyTitleClass {
                    padding-right: 12px;
                    line-height: 18px;
                    -webkit-line-clamp: 2;
                    overflow: hidden;
                    text-overflow: ellipsis;
                    display: -webkit-box;
                    height: 36px;
                    -webkit-box-orient: vertical;
                }

                .thirdPartyCallToActionClass {
                    background-color: #416BC4;
                    color: white;
                    border-radius: 4px;
                    padding: 6px 20px;
                    float: right;
                    text-align: center;
                    text-transform: uppercase;
                    font-size: 11px;
                }

                .fbDefaultNativeAdWrapper {
                    font-size: 12px;
                    line-height: 14px;
                    margin: 12px 0;
                    height: 36px;
                    vertical-align: top;
                }
            </style>
            <div class="thirdPartyRoot">
                <a class="fbAdLink">
                    <div class="fbAdMedia thirdPartyMediaClass"></div>
                    <div class="fbAdSubtitle thirdPartySubtitleClass"></div>
                    <div class="fbDefaultNativeAdWrapper">
                        <div class="fbAdCallToAction thirdPartyCallToActionClass"></div>
                        <div class="fbAdTitle thirdPartyTitleClass"></div>
                    </div>
                </a>
            </div>
        </div>
    </div>
    <!-- FB End -->


    </body>
    </html>
var b = d.currentScript || (function() {
    var c = d.getElementsByTagName('script');
    return c[c.length - 1];
})();
var e = b.parentElement;
<div style="display:none; position: relative;">
<div id="fb-ad-container" style="display:none; position: relative;">
 var e = d.getElementById("fb-ad-container");