Javascript:动态生成的函数,指的是带有GPT渲染的外部包含的JS文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Javascript:动态生成的函数,指的是带有GPT渲染的外部包含的JS文件相关的知识,希望对你有一定的参考价值。
谢谢你看这个。我想我在思考中犯了一个概念上的错误,这就是为什么我会先告诉你我的情景:
我有1或x DIV,我在其中显示DFP广告管理系统AdUnits,并将使用这些动态生成的功能。一旦DIV处于可见区域,该功能就会触发:
- 我动态生成链接
function scriptincluder(divid){
var gbgscript = document.createElement('script');
gbgscript.async = true;
gbgscript.type = 'text/javascript';
gbgscript.src = 'https://anyscript.net/script.js?function=myfmydiv1&div=mydiv1 ';
var node = document.getElementsByTagName('script')[0];
node.parentNode.insertBefore(gbgscript, node);
}
使用此功能,我动态创建链接,这到目前为止工作。所以我为myfmydiv1 / div1,myfmydiv2 / div2,myfmydiv3 / div3 ......等等生成链接。并将它们添加到parentNode。
- 我动态生成AdSlots
googletag.cmd.push(function() {
for (var slot in divslots) {
window['slot_'.concat(slot.toString())] = googletag.defineSlot('/Adslot/Adslot/Adslot/Adslot/Adslot/Adslot', slotsize[slot], slot.toString()).addService(googletag.pubads());
// generate external link pixel from #1:
scriptincluder(slot.toString());
}
googletag.pubads().enableSingleRequest();
googletag.pubads().disableInitialLoad(); // ad unit will not render yet
googletag.enableServices();
});
在这一部分,我生成广告单元并将其添加到全局变量“window ['slot _'。concat(slot.toString())]”(<==我在网上看到过这个,我很好奇,如果这是正确的方法。至少我可以在GCR开发工具中看到它。)
- 我生成了动态引用#1链接的函数。
for (var slot in divslots) {
var [‘myf’ + escape(slot)] = function() {
alert("I am: " + slot);
googletag.cmd.push(function() {
googletag.pubads().refresh([window['slot_'.concat(key2.toString())]]);});
}
}
一旦DIV插槽位于可见区域并刷新广告单元,就会触发该功能。
它总是触发错误的功能。例如,div1触发div2的功能,而div1实际上并不加载,而是div2。任何想法/帮助?
答案
我和我的一位经验丰富的程序员同事找到了解决方案。他建议在最后一段代码中使用cont变量作为变量函数。
for (var slot in divslots) {
const myFunction = 'myf' + escape(slot);
const mySlot = 'slot_'.concat(slot.toString());
var [myFunction] = function() {
alert("I am: " + slot);
googletag.cmd.push(function() {
googletag.pubads().refresh([window[mySlot]]);});
}
}
以上是关于Javascript:动态生成的函数,指的是带有GPT渲染的外部包含的JS文件的主要内容,如果未能解决你的问题,请参考以下文章