我想傾聽所有網頁中的所有io請求,但是,當我使用下面的語法時,我只能用yui實例來聽io。如何讓跨越實例的Y.io全局事件廣播
Y.on('io:success',myCallBack);
如何編寫自定義方法/事件或其他內容來實現此目的?
我的問題其實也是一樣的,如下網址:
http://yuilibrary.com/forum/viewtopic.php?p=26009
我GOOGLE了一段時間,但沒有找到這個實用的答案,任何幫助將不勝感激,謝謝。
我想傾聽所有網頁中的所有io請求,但是,當我使用下面的語法時,我只能用yui實例來聽io。如何讓跨越實例的Y.io全局事件廣播
Y.on('io:success',myCallBack);
如何編寫自定義方法/事件或其他內容來實現此目的?
我的問題其實也是一樣的,如下網址:
http://yuilibrary.com/forum/viewtopic.php?p=26009
我GOOGLE了一段時間,但沒有找到這個實用的答案,任何幫助將不勝感激,謝謝。
嘗試
(Y.io._map['io:0'] || new Y.IO()).publish({
'io:success': { broadcast: 2 },
'io:complete': { broadcast: 2 },
etc.
});
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>io.jsp</title>
<script src="/spring-test/scripts/yui_3.5.1/build/yui/yui-min.js"></script>
</head>
<body>
test
<script>
YUI().use("io-base", function(Y){
function onSuccess(transactionid,response,arguments){
alert('start!');
}
Y.Global.on('io:start',onSuccess);
});
Y1 = YUI().use("io-base", "node", function(Y1){
Y1.publish('io:start',{broadcast : 2});
Y1.io("http://www.yahoo.com.hk");
});
</script>
</body>
最後我得到了一個例子,但它僅適用於FF,Chrome,但在IE中失敗:
請建議,如果有任何改善,謝謝。
我再次搜索了API,似乎沒有辦法在不添加Y.publish的情況下實現這一點。 – user1514511 2012-07-14 17:02:48
非常感謝!但你介意給我一個實際的例子嗎?因爲我還不熟悉YUI API。 – user1514511 2012-07-11 08:25:17
那麼,YUI 3的主要用例就是讓你的代碼保持沙箱狀態,不能被全球環境訪問。因此,通過實例進行通信不是通過在Y上發佈的其他自定義事件完成的,這些事件使用'broadcast:2'配置。然後這些事件將從沙箱內的IO事件訂戶觸發。如果你不需要/需要沙箱,使用simpleyui或'var Y = YUI()。use(...);'全局公開YUI實例。 – Luke 2012-08-02 22:30:46