2017-12-12 3 views
0

고마워요. 내 생각에 개념적으로 실수를 저지르고 있다고 생각합니다. 즉, 먼저 내 시나리오에 대해 알려 드리겠습니다.Javascript : GPT 렌더링을 사용하여 외부에 포함 된 JS 파일을 참조하는 동적 생성 함수

DFP AdUnits를 표시하는 DIV가 1 또는 x 있고이 동적 생성 기능을 사용합니다.

  1. 나는이 내가 동적 링크를 생성이 기능을 동적으로

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); 
 
    }

의 링크를 생성하십시오 DIV는 가시 영역에서와 같이 함수는 즉시 트리거 지금까지 작동합니다. 그래서 myfmydiv1/div1, myfmydiv2/div2, myfmydiv3/div3 ...에 대한 링크를 생성합니다. parentNode에 추가하십시오.

나는 광고 슬롯 나는 광고 단위를 생성하고 전역 변수에 추가이 부분에서 동적으로

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(); 
 
    });

을 생성

  • "창
      == 저는 웹에서 이걸 보았습니다. 그게 올바른 방향인지 궁금합니다. 적어도 GCR 개발 도구에서 볼 수 있습니다. ('slot _'. concat (slot.toString())])

      1. # 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는로드합니다. 어떤 아이디어/도움?

  • 답변

    0

    필자는 경험 많은 프로그래머 동료와 솔루션을 알아 냈습니다. 그는 마지막 코드에서 variable 함수에 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]]);}); 
     
        } 
     
        }

    관련 문제