事件冒泡和捕获之间有什么区别?在这两个中,哪个是更快更好的模型?
我想要的是一个提供一些事件的自定义对象.例如:
var CustomObjectTextChangedEventName = 'textChanged';
var CustomObject = function () {
var _this = this;
var _text = "";
_this.OnTextChanged = document.createEvent("Event");
_this.OnTextChanged.initEvent(CustomObjectTextChangedEventName, true, false);
_this.ChangeText = function (newText) {
_text = newText;
fireTextChanged();
};
function fireTextChanged() {
_this.dispatchEvent(_this.OnTextChanged);
}
}
Run Code Online (Sandbox Code Playgroud)
使用该事件的代码如下所示:
myCustomObject = new CustomObject();
myCustomObject.addEventListener(CustomObjectTextChangedEventName, handleTextChanged, false);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的......在JS中使用事件的默认方式.但我不能让它变得烦人......
目前我的问题是我的对象没有实现"addEventListener"和"dispatchEvent".但是这个功能是从"元素"正常实现的......
我可以以某种方式提供它们,还是我必须为自己实现它们?我该如何实施它们?我是否必须实施自己的事件处理?(具有处理程序的内部列表,"添加" - 和"删除" - 处理程序功能,并在我要触发事件时触发每个处理程序)
问候!
我有一个复杂的UI结构,动态操作,并说我有一个ui_state对象,我保持用户的最新UI状态,如哪个选项卡可见,该选项卡内的内容等.
例如:
var ui_states = {
tabs : [
{
name : "some tab",
active : true,
children : { ... }
},
{
name : "some other tab",
children : { ... }
}
]
}
Run Code Online (Sandbox Code Playgroud)
我保持这个html5 localStorage,当用户刷新网站时,它重新打开页面.每次UI更改时,此对象都会相应更改.在改变它之后我需要运行让我们说updateLocalStorage()哪个工作完美.
我的问题是这个流程,我可以为我的ui_states对象创建一个自定义事件,就像每次操作对象时ui_states.addEventListener('onchange', function(){ // do stuff })不运行该updateLocalStorage()函数一样吗?
谢谢.
我使用express.js设置了REST服务器。现在,我想向该服务器添加sse。实现此 sse程序包后,出现错误。我知道我收到此错误,何时尝试使用res.send两次,但我没有。
ERROR: Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (http.js:690:11)
at ServerResponse.header (/home/root/node_modules/express/lib/response.js:718:10)
at ServerResponse.send (/home/root/node_modules/express/lib/response.js:163:12)
at app.get.str (/home/root/.node_app_slot/main.js:1330:25)
at Layer.handle [as handle_request] (/home/root/node_modules/express/lib/router/layer.js:95:5)
at next (/home/root/node_modules/express/lib/router/route.js:131:13)
at sse (/home/root/node_modules/server-sent-events/index.js:35:2)
at Layer.handle [as handle_request] (/home/root/node_modules/express/lib/router/layer.js:95:5)
at next (/home/root/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/home/root/node_modules/express/lib/router/route.js:112:3)
Run Code Online (Sandbox Code Playgroud)
是否有可能我无法在sse函数中使用express方法?例如:
app.get('/events', sse, function(req, res) {
res.send('...');
});
Run Code Online (Sandbox Code Playgroud)