2015-04-23 58 views
1

我一直在困擾某些事情,而且我正在向你們作爲最後的手段。我有一個JavaScript文件(parent.js),它正在加載另一個.js文件(child.js)。該parent.js文件有一個事件訂閱:將事件分派給.subscribe JavaScript方法

Class.prototype.subscribe('someEvent', someEventHandler) 

非常類似於Facebook的作用:

FB.Event.subscribe('auth.authResponseChange', auth_response_change_callback); 
FB.Event.subscribe('auth.statusChange', auth_status_change_callback); 

我想了解child.js可以如何分配(或廣播)someEvent使someEventHandler被解僱。

看來我看到的所有內容都講述瞭如何添加偵聽器,但沒有說明如何分派事件來處理附加到偵聽器的方法。

引用: API-docs的 https://developers.facebook.com/docs/reference/javascript/FB.Event.subscribe/v2.3

有人用類似的解決了問題,但我不使用FB SDK,只是用例子來讓我更清晰的目標:

FB.Event.subscribe not firing for certain events

事件派發一般情況如下: https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events

感謝提前一噸。

+0

有幾件事情這將是巨大的,如果你能澄清:#1您使用的其他庫,或寫你自己的? #2它看起來像你在Class.prototype上調用一個函數,這真的不是你想要的。我 – Norguard

+0

感謝您的迴應。我沒有在我的文件(child.js)中使用另一個庫。我不一定有權編輯parent.js代碼,但它正在監聽我應該分派給它的一些事件_('userDataReady')_。當我嘗試:_dispatchEvent('userDataReady')_我得到一個錯誤:_「'EventTarget'上執行'dispatchEvent'失敗..._ – jdubba

回答

0

看起來好像您可能正在使用某種未提及的庫。

這就是說,這裏是一些使用自定義事件與一些HTML和純JavaScript的例子。

HTML ...

<button onclick="triggerTheThing()">Trigger the thing</button> 
<br /> 
<span id="listeningElement1">Listening Element</span> 

和JavaScript ...

絆倒我一邊學習,這是你需要派遣元素監聽的事件
myElement = document.getElementById("listeningElement1"); 
myElement.addEventListener("triggeredEvent", function (e) { 
    this.innerHTML = e.detail.message; 
}); 

function triggerTheThing() { 
    var newEvent = new CustomEvent("triggeredEvent", { 
     detail: { 
      message: "It was triggered!" 
     } 
    }); 
    myElement.dispatchEvent(newEvent); 
} 

一件事事件。

下面是它在行動的jsfiddle:http://jsfiddle.net/4z891LwL/

道具這個傢伙:http://davidwalsh.name/customevent

+0

感謝您設置這一點,我沒有這個特定的設置問題,但當我嘗試將事件分派給父文件(加載我的腳本的文件)時,我最終得到一個錯誤。我試圖調用的事件與一個訂閱方法相關:_FB.Event.subscribe( 'auth.statusChange',auth_status_change_callback); _如果我正確理解了這個_subscribe_方法,那就像是一個監聽器,我應該派發一個像_'auth.statusChange'_這樣的事件來觸發回調。是嗎? – jdubba

+0

@jdubba'。訂閱(...)'不是本地JS方法。無論您看到的是使用實現該方法的某種類型的JS庫的頁面。 –

+0

謝謝@PhilWalton所以我必須從我的child.js使用相同類型的方法?這意味着我必須建立某種類型的「訂閱事件調度程序」?我見過的唯一真實的例子是Facebook引用,不幸的是,文檔從來沒有真正解釋如何發送。 – jdubba

相關問題