Development Tip

맞춤 이벤트를 통해 추가 데이터를 전달하는 방법이 있습니까?

yourdevel 2021. 1. 7. 20:08
반응형

맞춤 이벤트를 통해 추가 데이터를 전달하는 방법이 있습니까?


두 개의 자동 사용자 스크립트간에 데이터를 전달해야합니다. 이상적으로는 unsafeWindow객체를 건드리지 않고 사용자 지정 이벤트를 사용하는 것이 좋은 방법이라고 생각했습니다. 나는 다음과 같은 것을 생각했다 (예제에서 MSIE 모델은 무시하자).

addEventListener("customEvent", function(e) {
  alert(e.data);
});

var custom = document.createEvent("HTMLEvents");
custom.initEvent("customEvent", true, true);
custom.data = "Some data...";
dispatchEvent(custom);

이것은 표준 자바 스크립트 환경과 하나의 사용자 스크립트 내에서 잘 작동하지만 이벤트가 사용자 스크립트에 의해 시작되어 외부 또는 다른 사용자 스크립트 내부에서 포착되면 data속성은 undefined크롬에 있습니다. 전달 된 데이터를에 저장할 수 있다고 생각 sessionStorage하지만 매끄럽지 않습니다. 다른 우아한 해결책, 신사 숙녀 여러분? 완벽이 필요하고 달성 할 수 있습니다.


예, MessageEvent또는 CustomEvent.

사용 예 :

//Listen for the event
window.addEventListener("MyEventType", function(evt) {
    alert(evt.detail);
}, false);

//Dispatch an event
var evt = new CustomEvent("MyEventType", {detail: "Any Object Here"});
window.dispatchEvent(evt);

더 자세한 정보를 가진 객체를 속성으로 전달합니다.

var event = new CustomEvent('build', { 'detail1': "something", detail2: "something else" });

function eventHandler(e) {
  log('detail1: ' + e.detail.detail1);
  log('detail2: ' + e.detail.detail2);
}

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

참조 URL : https://stackoverflow.com/questions/9417121/is-there-any-way-of-passing-additional-data-via-custom-events

반응형