0

我有一个 dojox.mobile.IconMenu,上面有 6 个 dojox.mobile.IconMenuItems。当我按下 IconMenuItems 时,按钮应该被按下。我通过在正确的时间简单地切换按钮的图像来实现这种行为。

现在出现的问题如下:

在桌面 (Chrome) 上:当我单击按钮时,视图变化如此之快,以至于您看不到新的、按下的图形!我必须按住按钮大约半秒钟,然后释放它,直到按钮显示新图像。

在 Android/iOS 设备上(测试:Chrome、Firefox、Opera、Skyfire、Board Browser、Dolphin、Safari):按钮更改图像但我看不到更改,因为图形更改太慢。

这是代码(html)

<ul data-dojo-type="dojox.mobile.IconMenu" id="portalMenu" style="border: none; outline: none; background-image: url('../deliverables_800x480/backgrounds/img_bg_portal.gif'); position: absolute; z-index: 900; background-repeat: no-repeat; background-size: cover; height: 100%; width: 100%; top: 26px;">
<li label="IconMenuItem" data-dojo-type="dojox.mobile.IconMenuItem" id="portalButton1" icon="../deliverables_800x480/buttons/portal/btn_portal_freetext_big_normal.gif" style="border-top-color: transparent; border-right-color: transparent; border-bottom-color: transparent; border-left-color: transparent; line-height: 0px; text-align: center;" moveTo="null" onmousedown="toggleImg1()" onmousdown="toggleView1()"></li>

[此处的其他按钮]

这是我调用的函数(javascript):

onmousedown="toggleImg1()

// press button1
// press button1
function toggleImg1(){  
    portalButton1.set("icon", "../deliverables_800x480/buttons/portal/btn_portal_freetext_big_armed.gif");
}
function toggleView1() {   
    portalButton1.set("moveTo", "messaging");
    portalButton1.set("selected", true);
    portalButton1.set("icon", "../deliverables_800x480/buttons/portal/btn_portal_freetext_big_normal.gif");

}
4

1 回答 1

1

首先,您的标记中没有错误吗?我看到 onmousedown 然后 onmousdown,不应该是 onmousedown/onmouseup 吗?

但是我认为您应该使用 dojo/touch 并为此收听 touch.press/release 而不是 mousedown/up。这将确保您聆听触摸或鼠标的声音,具体取决于设备。

或者,也许您可​​以观察项目的“选中”状态,并在项目被选中时更改图标?就像是:

item.watch("selected", function(){
    this.set("icon", this.selected?"selected.png":"deselected.png");
});

然后,要让项目保持选中状态,您可以设置 _selEndMethod="timer"。如果需要,您还可以更改 _duration(默认 800,对您来说应该短一点?)。

于 2013-03-06T14:06:42.073 回答