【发布时间】:2011-09-30 01:03:48
【问题描述】:
我的问题完全是这样的:How do I pass javascript events from one element to another?,除了我需要一个原始的 JS 解决方案。
我有一个 webos 应用程序,它的 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 让我得到底层主体的原始节点。
-
嗯,我在 2011 年问过这个问题。引用的问题是在 2015 年问的。
-
这个问题是在 2012 年提出的。
标签: javascript webos