Wt(机智).关于Javascript实现不起作用的一无所知
Wt (Witty). Clueless about Javascript implentation not working
我遇到了这个问题,我试图通过Javascript将事件侦听器添加到弹出菜单中。但它看起来,它没有连接或其他什么。因为当我在弹出菜单上移动光标时,文本小部件的值不会改变。我做错了什么?
#define _SCL_SECURE_NO_WARNINGS
#include <vld.h>
#include <Wt/WApplication>
#include <Wt/WContainerWidget>
#include <Wt/WPushButton>
#include <Wt/WPopupMenu>
#include <Wt/WBreak>
#include <Wt/WJavaScript>
#include <windows.h>
class FooApplication : public Wt::WApplication {
public:
FooApplication(Wt::WEnvironment const& env)
: Wt::WApplication(env),
container(new Wt::WContainerWidget(root())),
signal(this, "signal"){
text.setText("Press the button and You will see the current date and time.");
text.setId("time");
container.addWidget(&text);
button.setId("button");
button.setText("Date & Time!");
button.setMenu(new Wt::WPopupMenu());
//hider_button->menu()->setAutoHide(true, 0);
button.menu()->setId("menu");
button.menu()->addItem("First");
button.menu()->addItem("Second");
button.menu()->addItem("Third");
button.menu()->addItem("Fourth");
lineBreak = new Wt::WBreak(&container);
container.addWidget(&button);
button.clicked().connect([&](Wt::WMouseEvent const&) {
text.doJavaScript("document.getElementById('time').innerHTML = Date()");
});
button.mouseWentOver().connect([&](Wt::WMouseEvent const&) {
button.menu()->doJavaScript("document.getElementById('menu').style.overflow = 'hidden';");
button.menu()->doJavaScript("document.getElementById('menu').style.height = '0px';");
button.menu()->popup(&button);
button.menu()->doJavaScript("function expand() {"
"var target = document.getElementById('menu');"
"var h = target.offsetHeight;"
"var sh = target.scrollHeight;"
"var loopTimer = setTimeout(expand, 8);"
"if (h < sh) { h += 5; } else {"
"clearTimeout(loopTimer); h = sh - 2;}"
"target.style.height = h + "px";}"
"expand();"
);
buttonMouseOn = true;
});
button.mouseWentOut().connect([&](Wt::WMouseEvent const&) {
buttonMouseOn = false;
});
button.menu()->doJavaScript(
"document.getElementById('menu').addEventListener('onmouseenter', function(){"
//+ signal.createCall() +
"document.getElementById('time').innerHTML = Date()})"
);
signal.connect(this, &FooApplication::changeValue);
}
void changeValue() {
Beep(523, 500);
if (menuMouseOn){
menuMouseOn = false;
} else {
menuMouseOn = true;
}
}
static FooApplication* create(Wt::WEnvironment const& env) {
return new FooApplication(env);
}
private:
Wt::WContainerWidget container;
Wt::WBreak* lineBreak;
Wt::WText text;
Wt::WPushButton button;
Wt::JSignal<void> signal;
bool buttonMouseOn = false;
bool menuMouseOn = false;
};
int main(int argc, char** argv) {
return Wt::WRun(argc, argv, &FooApplication::create);
}
它应该是'mouseenter'
,而不是'onmouseenter':
document.getElementById('menu').addEventListener('mouseenter', function() { ... });
https://developer.mozilla.org/en-US/docs/Web/Events/mouseenter
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 双链表的自定义实现不起作用(教育)
- 为什么读取函数在 sha1 c++ 实现中不起作用?
- 语言分析的二叉树实现 - 子节点:不起作用
- 在C++中实现二叉搜索树,搜索不起作用.尝试打印节点的元素会导致输出崩溃
- 我已经在 C++ 中实现了合并排序。它没有错误,但不知何故不起作用
- C++堆栈实现弹出函数不起作用
- 将接口与实现分离不起作用 c++
- 为什么我的网络 TCP/UDP 实现不起作用?
- C++接口(标头)和实现文件不起作用
- c++11-实现Promise的示例程序不起作用
- 复制在我的字符串中不起作用::复制实现
- 在C++中实现方法时继承不起作用
- 不同类的成员列表实现不起作用
- Wt(机智).关于Javascript实现不起作用的一无所知
- 带有私有实现的dllexport纯虚拟类不起作用
- 在 c++ 中实现静态构造函数不起作用
- C++自定义"List"实现不起作用
- 自动推导在作为 Lambda 实现时不起作用。错误:扣除'auto'之前