자바스크립트로 인해서 delay 가 발생합니다.
본문
제작중인 사이트에 적용한 스크립트입니다.
원래는 한줄로 표시된것을 보기좋게 재정리하였습니다.
<script>
!function(e){
function t(){
if(/in/.test(e.readyState))setTimeout(t,1);
else {
for(var s=0;s<e.styleSheets.length;s++){
var i=e.styleSheets[s];"html4css"!==i.title&&(i.disabled=!0)
}
}
}
function s(){
!e.readyState&&e.addEventListener&&(e.body?setTimeout(function(){
e.readyState="complete"
},500):setTimeout(s,1))
}
var i,o=window.A17||{},
n=e.documentElement,c=window,
a=e.getElementsByTagName("head")[0];
o.browserSpec="addEventListener"in c&&c.history.pushState&&e.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"html5":"html4",
o.touch=!!("ontouchstart"in c||c.documentTouch&&e instanceof DocumentTouch),
o.objectFit="objectFit"in n.style,o.iOS=/iPad|iPhone|iPod/.test(navigator.userAgent),
window.A17=o,n.className=n.className.replace(/\bno-js\b/," js "+o.browserSpec+(o.touch?" touch":" no-touch")+(o.objectFit?" objectFit":" no-objectFit")+(o.iOS?" ios":" no-ios")),
"html4"===o.browserSpec&&(
i=e.createElement("link"),
i.rel="stylesheet",
i.title="html4css",i.href="/dist/styles/html4css.css",
a.appendChild(i),
i=e.createElement("script"),
i.src="//legacypicturefill.s3.amazonaws.com/legacypicturefill.min.js",
a.appendChild(i),
s(),
t()
)
}(document);
</script>
이것이 적용되면 링크를 클릭할때 페이지 전환이 안되는 경우가 종종 발생합니다.
setTimeout 때문에 그런가 싶어서 1 또는 0 으로 변경해도 비슷한 상황이네요.
위 어떤 코드가 이런 증상을 발생하는데 역할을 하는 걸까요?
답변 1
function s(){
!e.readyState&&e.addEventListener&&(e.body?setTimeout(function(){
e.readyState="complete"
},500):setTimeout(s,1))
}
잘모르지만..조금이나마 도움을 드리고자 남겨봅니당..
setTimeout 이 꼭 필요한가요? 빼고는 안되나요?
위 500이 해당 값만큼 딜레이 되는중에 실행이되서 전환이 안되는게아닐까요?