我想倾听所有网页中的所有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