2011-04-08 2 views
2

Tumblr 블로그 템플릿을 구문 분석하는 간단한 앱이 있습니다. 사용자 정의 화면을 모델로하고 구성 가능한 옵션과 iframe 헤더가 포함되어 있습니다. 옵션이 변경 될 때마다 앱은 iframe을 다시로드하고 구성 양식을 일련 번호로 만들고 iframe의 src을 일련 번호가 지정된 데이터를 쿼리 문자열로 업데이트합니다.iFrame의 위치가 변경되지 않도록 하시겠습니까?

이 모든 경우는 예외가되며, 변경된 옵션으로 기본 색인 페이지 만 다시로드 할 수 있습니다. 사용자가 색인에서 멀리 이동하여 단일 게시물 페이지를보고 싶다면 템플릿은 기본 옵션으로 만 해당 페이지를 렌더링합니다. 즉, 사용자가 블로그를 탐색하는 동안 변경된 옵션은 유지되지 않습니다.

그래서 같은 $('iframe').load() 이벤트와 '변화를 지속'가질 수있었습니다

:

$('iframe').load(function(){ 
    updateTheme(); 
}); 

유일한 문제는 당신이 말할 수있는대로 iframe 완전히 페이지를 렌더링하는 데,이 기다릴 것입니다 기본 옵션을 사용하여 업데이트 된 옵션으로 다시 렌더링합니다. 내 말은 ... 작동하지만 정말 좋은 해결책은 아니란 것입니다.

아무도 내가 어떻게 iframe을로드하지 못하도록할지, 원하는 위치를 캡처 한 다음 헤더에 표시된대로 현재 옵션으로 프레임을 다시 렌더링하지 못하도록하는지 알고 있습니까?

도움을 주시면 감사하겠습니다. 미리 감사드립니다!

답변

1

내가 생각 해낸 무엇 :

var p = top || parent; 

(function($){ 
    $('a').click(function(e) { 
    var prevent = e.isDefaultPrevented(), 
     is_local = p.isLocal(this.href), 
     is_hash = $(this).attr('href').match(/^#/); 

    if(prevent || ! is_local || is_hash) return; 
    e.prevenDefault(); 
    p.updateTheme(this.href); 
    return false; 
    }); 
})(jQuery); 

내 걱정했다 나는 사용자가 <a/> 태그에 부착 된 자바 스크립트 이벤트에 영향을 미치는 것,하지만 분명히 jQuery를 기본을 감지 것 jQuery 자체로 막지 않았더라도 이벤트를 예방할 수 있습니다. 나는 이것을 다음과 같이 테스트했다 :

document.getElementById('test-link').onclick = function() { 
    return false; 
} 

jQuery는 원래 이벤트가 방지되었다는 것을 감지하므로 계속해서는 안된다고 가정한다.

1

최상위 수준 페이지와 포함 된 iframe 페이지를 호스팅하고 있습니까? 그렇다면 게임 할 수있는 게임이 있지만 예쁜 게임은 아닙니다. 예를 들어 포함 된 iframe 내의 링크를 다시 작성하여 구성 옵션을 미리 채울 수 있습니다 (예 : 같은 뭔가 :

여기
$('iframe').load(function(){ 
    $('a', $('iframe')).each(function() { 
    var new_url = this.attr("href"); 
    new_url += config_options; 
    this.attr("href", new_url); 
    }); 
}); 
+0

답변을 추가했습니다. 어떻게 생각하는지 알려주세요. 나는 네가 좋아한다고 생각했지만 가능한 한 문서를 바꾸고 싶었 기 때문에 나는 그 일을 해결할 수 있는지 알아보기 위해 약간의 트릭을 시도했다. – bschaeffer

관련 문제