2014-04-07 5 views
3

레거시 코드로 작업 중이며 최상위 레벨 부모 문서에 jQuery onClick 트리거를 추가하려고하지만 작동하지 않는 것 같습니다. 나는 정직하게 얼마나 많은 프레임이이 요소가 갈 것인지 확실하지 않다.프레임에서 최상위 수준 문서로 이벤트를 보냅니 까?

이것은 웹 응용 프로그램의 하위 섹션으로 1996-1999 사이에 있습니다. 앱의 나머지 부분에서 버튼을 클릭하면 jquery-ui 모달이 트리거됩니다.

나는

 onclick="window.parent.$('#help-button').trigger('click')" 

<img id="help-button" 
    data-pagehash="Need This" 
    onclick="$('#help-button', parent.document).click()" 
    src="stuff" /> 

그리고

을 시도하지만 어느 쪽도 노력하고도 오류를 던지고있다. 내가 뭘해야할지 잘 모르겠다. 프레임에 대한 작업 경험이별로 없으며 대부분 구식이므로 정보가 부족합니다.

또한 차이가 나는 경우 상위 수준 부모에게 데이터 속성을 보내야합니다. DOM 객체와 함께 전달되는지 여부는 확실하지 않습니다.

+4

이것은 끔찍한 소리가 난다. – SomeKittens

+2

첫 번째는 동일한 도메인인가? – epascarello

+0

@epascarello 예 – mawburn

답변

1

기존 앱과 같은 상황입니다. Window.top은 하나 이상의 깊이가 중첩 된 경우 최상위 수준 문서로 이동 한 다음 올바른 프레임으로 내비게이션 할 수 있어야합니다. 데이터 속성 값을 얻으려면 onclick="window.top.frames[0].$("#help-button").trigger('click', [this])"을 사용하여 현재 버튼/이미지를 추가 인수로 전달하십시오. 그럼 당신은 다음과 같은 바인딩 최상위 레벨에서 데이터를 잡을 수 있습니다

$("#help-button").on("click", function(e, additionalArgs) { 
    var data = 'some default value'; 
    if(additionalArgs) { 
     data = $(additionalArgs).data('pagehash'); 
    } 

    $("#dialog").text(data).dialog(); 
}); 

additionalArgs 값은 일반적인 클릭 이벤트를 무시됩니다. 여기 내가 함께 해킹 한 추악한 js 바이올린 : http://fiddle.jshell.net/jpfRY/18/