2016-12-30 3 views
1

Trip Advisor 위젯을 연기하거나 비동기 적으로로드하려고하지만 어떤 이유로 작동하지 않습니다.Trip Advisor 스크립트 지연

Trip Advisor 스크립트가 document.write 명령을 실행하기 때문에 async 또는 defer가 작동하지 않을 수 있습니다. 트립 어드바이저에서 위젯 JS 여기

입니다 : https://www.tripadvisor.co.uk/Widgets-g186338-d187591-The_Ritz_London-London_England.html#w-selfserveprop

사람이 스크립트가 더욱 확대됨에 만드는 방법을 조언 할 수 있습니까? 당신이 연기 또는 비동기를하려고하면 https://jsbin.com/cawivusecu/edit?html,output

당신은 그들이 위젯을 깰 것으로 보인다 볼 수 있습니다 - 여기

는 JSBin 샌드 박스에있는 스크립트입니다.

여기 참조 용 트립 어드바이저에서 했나 코드 :

<div id="TA_selfserveprop20" class="TA_selfserveprop"> 
<ul id="wzAgNPZ2m6a" class="TA_links TEBLjL9Mu"> 
<li id="Cp4AmQch" class="w7hHfpS"> 
<a target="_blank" href="https://www.tripadvisor.co.uk/"><img src="https://www.tripadvisor.co.uk/img/cdsi/img2/branding/150_logo-11900-2.png" alt="TripAdvisor"/></a> 
</li> 
</ul> 
</div> 
<script src="https://www.jscache.com/wejs?wtype=selfserveprop&amp;uniq=20&amp;locationId=187591&amp;lang=en_UK&amp;rating=true&amp;nreviews=5&amp;writereviewlink=true&amp;popIdx=true&amp;iswide=false&amp;border=true&amp;display_version=2"></script> 

답변

0

당신은 document.write()를 사용하는 스크립트로의 로딩을 연기 할 수 없습니다. document.write()이라는 특성상 파서가 문서의 적절한 위치에있을 때 실행해야한다는 것을 의미합니다. 파서가 문서의 적절한 위치에있을 때 스크립트를 사용하는 스크립트의 위치와로드 시점을 자주 변경할 수 없음을 의미합니다.

또한 문서가 구문 분석되면 document 개체가 닫히고 앞으로 document.write()은 현재 문서를 지우고 새로운 빈 문서를 엽니 다. 따라서 지연 스크립트에서 document.write()이 실행되는 경우 발생합니다.

스크립트를 수정하여 document.write()을 제거 할 수 없으면 스크립트의로드를 지연시킬 수 없습니다.