2010-05-13 4 views
0

동적으로 요소 (레벨 1)를 생성하여 동적으로 요소 (레벨 2)를 만듭니다. 그러나 레벨 2 요소의 하위 요소는 상위 요소로 "본문"을가집니다.Javascript : 하위 노드의 부모를 제어 할 수 없습니다.

아래 HTML 코드에서 spotAd2가 내 함수 인 createNode()에 의해 작성되었습니다. Google Ad Sense 태그입니다. 그러나 Google Ad Sense 태그는 '본문'바로 아래에있는 요소를 만듭니다. 나는 tnDiv1하에 그들을 필요로한다.

function createNode(t, // type. 
        tn, // if type is element, tag name. 
        a, // if type is element, attributes. 
        v, // node value or text content 
        p, // parent 
        f) // whether to make dist the first child or not. 
{ 
    n = null; 

    switch(t) 
    { 
    case "element": 
     n = document.createElement(tn); 

     if(a) 
     { 
     for(k in a) 
     { 
      n.setAttribute(k, a[ k ]); 
     } 
     } 
    break; 

    case "text": 
    case "cdata_section": 
    case "comment": 
     n = document.createTextNode(v); 
    break; 
    } 
    if (p) 
    { 
    if(f) 
    { 
    p.insertBefore(n, p.firstChild); 
    } 
    else 
    { 
    p.appendChild(n); 
    } 
} 
    return n; 
} 

spotAd2 = document.getElementById("spotAd2"); 
n1 = createNode("element", "div", {"id":"tnDiv1"}, "\n" , spotAd2, true); 
n2 = createNode("element", "script", {"type":"text\/javascript"}, "\n" , n1, false); 
n3 = createNode("comment", "", null, "\n" + 
"google_ad_client = \"pub-0321943928525350\";\n" + 
"/* 728x90 (main top) */\n" + 
"google_ad_slot = \"2783893649\";\n" + 
"google_ad_width = 728;\n" + 
"google_ad_height = 90;\n" + 
"//\n" , n2, false); 
n4 = createNode("element", "script", {"type":"text\/javascript","src":"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js"}, "\n" , n1, false); 

--- 결과 : (거의 24 시간 동안 깨어)

<body> 

<table cellspacing="2" cellpadding="2" border="1"> 
<tbody><tr> 
<td>Oel ngati kemeie</td> 
<td>Kamakto niwin</td> 
</tr> 
<tr> 
<td>The ad:</td> 
<td> 

    <div id="spotAd2"> 
    <!-- Created by createNode() --> 
    <div id="tnDiv1"> 
     <script type="text/javascript"> 
     google_ad_client = "pub-0321943928525350"; 
     /* 728x90 (main top) */ 
     google_ad_slot = "2783893649"; 
     google_ad_width = 728; 
     google_ad_height = 90; 
     </script> 
     <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 
    </div> 
    <!-- Created by createNode() --> 
    </div> 

</td> 
</tr> 
<tr> 
<td>txopu ra'a tsi, tsamsiyu</td> 
<td>teyrakup skxawng</td> 
</tr> 
</tbody></table> 

<!-- Created by adsense tag, need these to be under tnDiv1 --> 
<script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script> 
<script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script> 
<script>google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);</script> 
<ins style="border: medium none ; margin: 0pt; padding: 0pt; display: inline-table; height: 90px; position: relative; visibility: visible; width: 728px;"> 
    <ins style="border: medium none ; margin: 0pt; padding: 0pt; display: block; height: 90px; position: relative; visibility: visible; width: 728px;"> 
    <iframe width="728" scrolling="no" height="90" frameborder="0" vspace="0" style="left: 0pt; position: absolute; top: 0pt;" src="http://googleads.g.doubleclick.net/pagead/ads?client=ca-pub-0321943928525350&amp;output=html&amp;h=90&amp;slotname=2783893649&amp;w=728&amp;lmt=1273708979&amp;flash=10.0.45&amp;url=http%3A%2F%2Fkenshin.katanatechworks.com%2Ftest%2FadsBrowserSide.php&amp;dt=1273708980294&amp;shv=r20100422&amp;correlator=1273708980298&amp;frm=0&amp;ga_vid=695691836.1273708981&amp;ga_sid=1273708981&amp;ga_hid=1961182006&amp;ga_fc=0&amp;u_tz=480&amp;u_his=2&amp;u_java=1&amp;u_h=1080&amp;u_w=1920&amp;u_ah=1052&amp;u_aw=1920&amp;u_cd=24&amp;u_nplug=5&amp;u_nmime=38&amp;biw=1394&amp;bih=324&amp;fu=0&amp;ifi=1&amp;dtd=955&amp;xpc=Jl67G4xiq6&amp;p=http%3A//kenshin.katanatechworks.com" name="google_ads_frame" marginwidth="0" marginheight="0" id="google_ads_frame1" hspace="0" allowtransparency="true"> 
    </iframe> 
    </ins> 
</ins> 
<!-- Created by adsense tag, need these to be under tnDiv1 --> 
</body> 
+0

_Please_는 의미있는 변수 이름을 사용하십시오. – SLaks

+0

이것은 실제 질문이 아닙니다. 문제가있는 곳을 알려주고 코드를 덤프하지 말아야합니다. –

+0

이것이 올바르게 포맷되지 않았다면 매우 유감스럽게 생각합니다. 새 질문을 만들고 올바르게 형식을 지정하겠습니다. – iamhappycoder

답변

0

확인 후 많이 필요한 수면 내 머리를 정리하고 유용한 입력을 문제 더 나은 (분석 할 수 있었다 제 동료들로부터). 솔루션의 전체 많이 저를 이끌어

JavaScript - controlling the insertion point for document.write

:

나는 범인 document.write를()이다이 같은 것을 물어 봤어야 것을 깨달았다.

나는 다음이 프로토 타입을 함께했다 :

document.write = function(str) 
{ 
    div = document.createElementNS("http://www.w3.org/1999/xhtml","div"); 
    div.innerHTML = str; 

    var nodes = div.childNodes; 
    while (nodes.length) 
    { 
     document.getElementById("spotAd2").appendChild(nodes[0]); 
    } 
}; 

짜잔! 애드 센스 광고가 내가 원하는 곳에서 나타났습니다.

조금씩 세분화하여 일반 솔루션으로 바꿀 수 있습니다.

관련 문제