source

ThickBox가 닫혔을 때 이벤트를 어떻게 트리거하시겠습니까?

ittop 2023. 10. 9. 23:33
반응형

ThickBox가 닫혔을 때 이벤트를 어떻게 트리거하시겠습니까?

이 질문은 워드프레스와 반 관련된 질문이지만 다른 곳에 응용 프로그램이 있습니다.기본적으로, 누군가가 Thickbox에서 나갈 때 페이지의 다른 곳에서 이벤트가 발생하도록 만들려고 합니다.Thickbox 파일을 편집하는 것은 선택 사항이 아닙니다.

Thickbox가 그렇게 쓰이지 않아서 좀 복잡합니다.하지만 아마 여러분은 그것을 하기 위해 몇 가지 속임수를 사용할 수 있을 것입니다.

권장되는 솔루션은 아니지만 닫기 기능을 "다시 작성"할 수 있습니다.다음과 같은 경우:

var old_tb_remove = window.tb_remove;

var tb_remove = function() {
    old_tb_remove(); // calls the tb_remove() of the Thickbox plugin
    alert('ohai');
};

웍스 \o/ http://jsfiddle.net/8q2JK/1/

이런 걸 시도해 볼 수도 있고요

var tb_unload_count = 1;
$(window).bind('tb_unload', function () {
    if (tb_unload_count > 1) {
        tb_unload_count = 1;
    } else {
        // do something here
        tb_unload_count = tb_unload_count + 1;
    }
});

tb_unload두 번 트리거되므로 코드가 두 번째로 실행되지 않도록 약간의 해킹이 포함됩니다.

이것이 글로벌 솔루션인지는 확실하지 않지만 WordPress의 경우 적어도 최신 버전(4.9.5)에서는 다음을 사용할 수 있습니다.

jQuery( 'body' ).on( 'thickbox:removed', function() {
    // Your code here.
});

Thickbox v3.1에서 tb_remove() 호출:

jQuery( 'body' ).trigger( 'thickbox:removed' );

참조: https://github.com/WordPress/WordPress/blob/master/wp-includes/js/thickbox/thickbox.js#L290

클릭 핸들러를 닫기 버튼에 바인딩하여 해킹할 수 있다고 생각합니다.

$("#TB_closeWindowButton").click(function() {
    doSomething();
});

선택의 여지가 있다면 두꺼운 상자(더 이상 유지되지 않으므로)를 없애고 보다 활동적인 커뮤니티가 있는 것을 사용합니다.사실 두터운 박스 사이트는 몇 가지 대안을 제시합니다.

청취자를 thick 박스가 닫혔을 때 트리거되는 "tb_unload"에 바인딩할 수 있습니다.jQuery 사용 예제:

<input id="tb_button" type="button" value="Click to open thickbox" />

jQuery('#tb_button').on('click', function(){
      tb_show('This is Google in a thickbox', 'http://www.google.com?TB_iframe=true');
      jQuery('#TB_window').on("tb_unload", function(){
        alert('Triggered!');
    });
}

Thickbox 3.1에서는 Thickbox-fixed.js 안으로 들어가 나를 위한 맞춤 기능을 추가할 것입니다.

콜백 기능을 추가하는 것만으로도 좋은 방법은 확실하지 않지만, 제 프로젝트에서는 효과가 있습니다.

function mycustom_tb_remove(callback) {
  $("#TB_imageOff").unbind("click");
  $("#TB_closeWindowButton").unbind("click");
  $("#TB_window").fadeOut("fast",function(){
    if(callback)callback();
    $('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();
  });
  $("#TB_load").remove();
  if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
    $("body","html").css({height: "auto", width: "auto"});
    $("html").css("overflow","");
  }
  document.onkeydown = "";
  document.onkeyup = "";
  return false;
}

그래서 커스텀 리무브 기능을 사용할 때.이렇게 쓸게요.

self.parent.mycustom_tb_remove(function(){
    alert("Closed");
});

두꺼운 상자가 열리면 이벤트를 시작하고 싶었습니다. 이런 식으로 할 수 있었습니다. (누군가에게 도움이 되었으면 좋겠습니다.

jQuery( 'body' ).on( 'thickbox:iframe:loaded', function ( event ) {
//Your trigger code here.

});

언급URL : https://stackoverflow.com/questions/6091998/how-would-you-trigger-an-event-when-a-thickbox-closes

반응형