2014-08-29 2 views
0

http://chasemccoy.net/에 사이트를 운영하고 데스크톱에서 사이드 바에 광고를 게재합니다. 이는 광고 네트워크의 일부 JS 코드에서 가져옵니다.휴대 기기의 콘텐츠 위치 변경

사이트는 iPhone에서 볼 때 맞춤 레이아웃을로드합니다. 휴대 기기에 광고가 게재 될 때 해당 광고를 사이트의 바닥 글에 배치해야합니다. 모바일 레이아웃을 변경하기 위해 미디어 쿼리를 사용하고 있습니다.

내 초기 솔루션은 JS를 바닥 글에 추가하고 display : none; 데스크톱 버전. 그러나 JS는 사이트에 두 번로드되지 않습니다. 기본적으로 JS가 푸터 코드에 도달 할 때까지 모바일 버전에서 JS가로드되는 것을 방지하는 방법을 알려줍니다.

쉽게 해결할 수 있습니까? 나는 어떤 방식 으로든 JS wiz가 아니다. 당신의 도움을 주셔서 감사합니다.

편집 : 여기에 광고의 JS는 다음과 같습니다 단순히 내가 표시하고자하는 HTML의 위치에 붙여

<script async type="text/javascript" src="//cdn.yoggrt.com/yoggrt.js?zoneid=1353&serve=C6SD52Y&placement=chasemccoynet" id="_yoggrt_js"></script> 

. 유일한 문제는 브라우저가 코드의 인스턴스를 두 개 이상로드하지 않는다는 것입니다.

편집 : 다음은 사이드 바 개요입니다.

div id="sidebar"> 

    <div class="gravatar"> 
     <a href="http://chasemccoy.net/"><img alt src="avatar.png" class="avatar avatar-100 photo" height="100" width="100"></a> 
     </div> 

    <ul> 
    <li><a href="http://chasemccoy.net/start-here">Start Here</a></li> 
    <li><a href="http://chasemccoy.net/colophon">Colophon</a></li> 
    <li><a href="http://chasemccoy.net/archive">Archive</a></li> 
    <li><a href="http://chasemccoy.net/rss">RSS</a></li> 
    </ul> 

    <!-- Yoggrt.com Zone Code --> 

    <script async type="text/javascript" src="//cdn.yoggrt.com/yoggrt.js?zoneid=1353&serve=C6SD52Y&placement=chasemccoynet" id="_yoggrt_js"></script> 

    <!-- End Yoggrt.com Zone Code --> 

</div> <!-- Sidebar --> 
+1

이 질문에 대답하려면 머리글, 본문, 세로 막대, 바닥 글 및 광고 코드를로드하는 데 사용되는 JavaScript 또는 기타 코드와 같은 HTML 구조의 개요를 모두 추가하십시오. 광고에 대한 컨테이너 역할을하는 모든 HTML을 추가합니다. 이 코드 **는 ** 귀하의 사이트뿐만 아니라 질문에 존재해야합니다. 그렇지 않으면 문제가 해결되면 다른 사람을 언급하는 것처럼 쓸모 없게됩니다. – pwdst

+0

flexbox와 함께 미디어 쿼리를 사용하여 사이드 바를 바닥 글로 이동하고 필요에 따라 스타일을 지정할 수 있습니다. 요청에 따라 개요 페이지 구조를 제공하십시오. – pwdst

답변

0

HTML 코드를 복사하기 만하면됩니다. JS 코드가 아닙니다. 그리고 같은 디스플레이를 사용하십시오 : 없음; 방법.

나는 HTML 코드를 두 번 사용함을 의미합니다. JS 코드를 두 번 사용하지 마십시오.

+0

페이지가로드 될 때마다 광고가 동적으로 회전하기 때문에이 작업을 수행 할 수 없습니다. 그것은 정적 일 수 없습니다. –

+0

OK 멋쟁이. 대체 광고 코드가 있습니까? –

+0

불행히도, 아니오. –

0

몇 가지 선택 사항이 있습니다. 하나는 스크립트 노드를 동적으로 생성하는 것입니다.

if(! navigator.userAgent.match(/iPhone/i)) { 
    var aScripts = document.getElementsByTagName('script'), 
     elContainer = aScripts[aScripts.length - 1].parentNode, 
     elScript = document.createElement("script"); 

    elScript.type = "text/javascript"; 
    elScript.src = "http://chasemccoy.net/wp-content/themes/lessismoresidebar/js/retina-1.1.0.js" 

    elContainer.appendChild(js); 
} 

here : 사이드 바에서 당신은 (하지 테스트) 이런 식으로 뭔가있는 스크립트 노드가 필요합니다.

+0

감사합니다. 나는 JS가 아닌 해결책을 정말로 기대하고 있었다. 브라우저가 모바일에 사이드 바를 완전히로드하는 것을 막는 방법은 없습니까? 나는 display : none을 사용하여 숨김 상태로 유지하지만 스크립트는 여전히로드됩니다. –

+0

자바 스크립트 기반 솔루션을 사용하는 경우 스크립트를 추가 할 위치를 감지하기 위해 사용자 에이전트 문자열 대신 미래의 증명 및 교차 플랫폼 뷰포트 너비를 사용하는 것이 좋습니다. 휴대 전화! == 아이폰. – pwdst

+1

위의 Peter의 의견에 완전히 동의합니다. 문제에 대한 신속한 대응 방법은 많은 수준에서 훨씬 효과적입니다. 나는 체이스의 질문에 직접 답하려고했다. 뷰포트 너비를 사용하려면 조건부 아이폰의 가로 방향을 전형적인 브레이크 포인트로 사용하여 if (window.innerWidth <= 480) {'이됩니다. –