我的问题完全是这样的:How do I pass javascript events from one element to another?除了我需要一个原始的JS解决方案。从一个DOM节点到另一个节点的路由事件没有JQUERY
我已经有了一个web应用程序,其UI的功能是在页面上与海誓山盟一起滚动的元素分层。基本上我有什么相当于iframe(不完全,但原则上),以及生活在它上面的z层的浮动头。当我滚动iframe中的元素时,它也会将浮动标题向上移动。
但是,我还需要拖动标题时滚动底层文档。
这是一个触摸屏界面,所以我正在尝试onmousemove和ontouchmove事件。
我有下面的代码,但它似乎并没有做任何事情:
setupScrollFromHeader: function setupScrollFromHeader() {
// webos enyo stuff. Don't worry about it. just know that I get the
// raw dom elements through the this.$.elem.node syntax
var body = this.$.body, header = this.$.mailHeaderUnit;
if (!header.hasNode() && !body.hasNode()) {
return;
}
body = body.node;
// end enyo specific stuff
header.node.addEventListener('touchmove', function(event) {
console.log("### touch move");
event.preventDefault();
body.dispatchEvent(event);
var touch = event.touches[0];
console.log("Touch x:" + touch.pageX + ", y:" + touch.pageY);
}, true);
console.log("### set this stuff up");
}
我使用dispatchEvent转发活动,每: https://developer.mozilla.org/en/DOM/element.dispatchEvent
我已经通过touchmove和mousemove事件自己尝试了这一点,切换防止默认值,并且还用true/false标志更改冒泡行为。
在所有情况下,我都会看到日志打印出来,但事件永远不会传递到基础元素。我究竟做错了什么?这种方式甚至可以传递事件吗?
您显示的代码不完整。请显示**整个**(相关)源代码(例如'this。$。mailHeaderUnit','this。$','this。$。body'的定义) –
这是无关紧要的。只要知道我有我需要的节点。 header.node让我获得浮动头的原始dom节点。 Body.node让我获得底层主体的原始节点。 – Gopherkhan
[如何克隆或重新分派DOM事件?](https://stackoverflow.com/questions/11974262/how-to-clone-or-re-dispatch-dom-events) –