aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 13413|回复: 5

web窗体如何禁用 F5 CTrl+N 之类的快捷键?

[复制链接]

8

主题

7

回帖

88

积分

一级会员

积分
88
发表于 2011-2-28 14:06:47 | 显示全部楼层 |阅读模式

var wb = web.form(winform.static_wb);

第一种 :

import key;
htmlEvent = com.ImplInterface(
    function(event){
    if( key.getState("CTRL") ){
            win.util.tray.pop("按CTRL了")
        }
     if( key.getState("F5") ){
            win.util.tray.pop("按F5了")
            return  false;  //这里似乎不能紧致F5刷新啊?
        }
     }
)
doc.attachEvent("onkeydown",htmlEvent)


另外一种

winform.static_wb.wndproc = function(hwnd,message,wparam,lparam){
  这里不知道该如何写呢
}


该如何实现禁用某些按键或者按键组合呢? 因为想用网页做界面

7

主题

67

回帖

488

积分

二级会员

积分
488
发表于 2013-2-19 13:44:41 | 显示全部楼层
添加javascript,达到屏蔽的效果。
  1. //执行脚本,屏蔽按F5键
  2.                 var js = /*
  3.                         function document.onkeydown()   
  4.                         {   
  5.                                 if(event.keyCode==116)
  6.                                 {   
  7.                             event.keyCode = 0;   
  8.                             event.cancelBubble = true;   
  9.                             return false;   
  10.                         }   
  11.                         }
  12.                     */
  13.                 wb.doScript( js )       
复制代码

9

主题

443

回帖

2546

积分

版主

积分
2546
发表于 2013-2-19 14:47:15 | 显示全部楼层
首先F5快捷键并不是宿主窗体处理的消息,网页控件的窗口是一个子窗口,所以要在 winform.pretranslate 在分发消息以前处理快捷键,或者子类化控件窗口,可以参考下 《禁用Flash右键菜单》http://bbs.aardio.com/thread-7415-1-1.html

另外标准库里的 web.ui 创建的web窗体是自动禁用F5的,我们看一下源码知道了这样也可以禁用F5
  1. wb._form.translateAccelerator = function(msg){
  2.         if (   (msg.message == 0x100/*_WM_KEYDOWN*/) || (msg.message == 0x101/*_WM_KEYUP*/) ) {
  3.                 if(msg.wParam == 0x74/*_VK_F5*/)
  4.                         return true;
  5.         }  
  6.         return wb._host.tranacc(msg)
  7. }  
复制代码
如果在aardio里处理web窗体的事件也不是这样写,应当等网页打开以后
  1. wb.attach(
  2.         function (event) {
  3.                  
  4.         }
  5.         ,"onkeydown"
  6. );
复制代码

评分

参与人数 1 +10 收起 理由
fantasynew2 + 10 很给力!

查看全部评分

7

主题

67

回帖

488

积分

二级会员

积分
488
发表于 2013-2-19 19:53:58 | 显示全部楼层
roger 发表于 2013-2-19 14:47
首先F5快捷键并不是宿主窗体处理的消息,网页控件的窗口是一个子窗口,所以要在 winform.pretranslate 在分 ...

我用新建web窗体创建的窗体,并不能屏蔽F5。
可以把
var html = /**
<html>
abc
</html>
**/
wb.write(html)

替换掉自动生成的代码中的
wb.go("http://bbs.aardio.com/")
运行程序,在内嵌web窗口点一下鼠标,将焦点移到web窗体,然后在按F5键,abc就不见了,就是被刷新了。

75

主题

767

回帖

5045

积分

六级会员

The only one

积分
5045
发表于 2013-2-19 20:46:43 | 显示全部楼层
lvjing79 发表于 2013-2-19 19:53
我用新建web窗体创建的窗体,并不能屏蔽F5。
可以把
var html = /**

新建一个web窗体工程,看到下面的向导,选择web UI工程才可以自动屏蔽F5快捷键
未命名.jpg

7

主题

67

回帖

488

积分

二级会员

积分
488
发表于 2013-2-20 09:56:56 | 显示全部楼层
look 发表于 2013-2-19 20:46
新建一个web窗体工程,看到下面的向导,选择web UI工程才可以自动屏蔽F5快捷键

多谢指点!
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-2-13 16:23 , Processed in 0.090422 second(s), 29 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表