2011-09-02 2 views
1
function switchTemplate(stylePath){ 
    var ns = $('<link>', { 
      href: stylePath, 
      id: 'themeStyle', 
      type: 'text/css', 
      rel: 'stylesheet' 
     }); 
    $('#themeStyle').replaceWith(ns); 
    resetPops(); 
    positionElements(); 
    $('#video-overlay').show(); 
} 

스타일 시트가 제대로로드되어 잠시 후에 표시되지만 positionElements 함수 (offset()을 사용하여 비디오 요소 위에 비디오 오버레이를 배치)가 올바르게 실행되지 않습니다. 나는 새로운 DOM 위치가 아직없는 것 같아요?javascript DOM에 영향을 미치는 스타일 시트 재로드 지연?

저는 positionElements()가 있습니다. 창 크기 조정에 연결되어 있고 스타일 시트를 전환 한 직후에 바로 호출하면 모든 것이 올바른 위치로 이동합니다.

나는 타이머 지연을 만들 수 있다고 생각하지만, 특히 안정적으로 보이지는 않습니다. positionElements() 함수를 묶어서 최신 상태로 유지할 수있는 다른 이벤트가 있습니까?

답변

2

이 SO 질문에 대한 대답은 스타일 시트가 완전히로드되었는지 확인하는 방법을 보여줍니다 (SO Question). 그러면이 사용자 정의 이벤트에로드 된 후에 발생해야하는 모든 기능을 이동할 수 있습니다.

+0

굉장합니다. 완전한! :) – Damon

관련 문제