使用Javascript确定“Overtype”模式

时间:2009-07-16 12:20:16

标签: javascript

我们正在创建一个Web应用程序来替换旧式的绿屏应用程序。在绿屏应用程序中,当用户按下Insert键以在改写和插入模式之间切换时,光标会改变以指示用户当前所处的输入模式。在IE(该公司的官方浏览器)中,改写模式也有效,但是在用户开始输入并且可能意外覆盖现有信息之前,没有关于改写模式是否开启的可视指示。如果处于改写模式,我想在屏幕上放置某种视觉指示器。

如何从Javascript确定浏览器是否处于“改写模式”?

是否有一些属性或功能我可以查询以确定浏览器是否处于改写模式?即使是特定于IE的解决方案也会有所帮助,因为我们的公司政策要求浏览器使用IE7(纯粹的折磨,顺便说一句)。

(我知道一个解决方案是检查Insert键的按键。但是,这是一个我宁愿避免的解决方案,因为该方法看起来有点不稳定且容易出错,因为我不能保证用户在他/她点击我的页面之前会处于什么模式。)

这个问题背后的原因:

绿屏应用程序的这一部分的功能是用户可以从“预先格式化的文本正文”列表中进行选择。

原油,例如

 
 The excess for this policy is: $xxxxxx       and max limit is:$xxxxxx
 Date of policy is:             xx/xx/xxxx    and expires     : xx/xx/xxxx
 Some other irrelevant text

选择此“预先格式化的文本”后,用户将使用改写类型将x替换为实际值,而不会干扰文本其余部分的对齐。

(很明显,如果他们愿意的话,他们仍然可以编辑'预先格式化的文本'的任何部分。通常情况下,他们只是希望替换文本的特定部分。保持对齐很重要这些文本部分最终可以打印在文档上。)

当然,只需先选择要替换的x就可以达到同样的效果,但是(关于简化向Web应用程序的过渡)以允许旧方法做事继续工作,同时仍允许更精通技术的用户使用“网络方法”。

基本上,我们试图让从绿屏应用程序到网络应用程序的初始过渡尽可能无缝,以尽量减少长期绿色安检人员的阻力。

3 个答案:

答案 0 :(得分:1)

在IE中,您可以使用document.queryCommandValue("OverWrite")

仅适用于IE:

function isOverwriteEnabled() {
    try {
        // try the MSIE way
        return document.queryCommandValue("OverWrite");
    } catch (ex) {
        // not MSIE => not supported
        return false;
    }
}

Firefox,Chrome和Safari:

由于Mac没有也不支持“插入”键,因此Safari永远不会支持“插入”模式。

对于Chrome和Firefox,不鼓励“插入”模式支持,因为Mac没有。 (另请参阅“其他”)

这也意味着,由于Windows支持“插入”模式,因此IE很可能始终支持它。

此外:

Firefox多年来一直有bug report classified as "WontFix",因此可能永远不会支持“插入”键。

答案 1 :(得分:0)

问题在于,如果用户在输入页面后按下插入键,则可以轻松追踪。

但是当用户在进入您的页面之前已经按下了插入键时,这似乎是一项艰巨的任务。

答案 2 :(得分:0)

我建议仔细考虑'改写'功能。这种行为在网络环境中是否有意义?

“翻译”功能在旧的ANSI演示文稿中提供了哪些实用程序,这是通过网络提供的?

除非我完全误解你的问题(如果是这样道歉),我觉得开发意图可能与用户期望和典型的网络惯例不一致。

如果目标是制作一个页面:

  • 默认情况下,“插入”模式已禁用
  • 用户可以触发“插入模式”进行编辑

...那为什么不使用动态表单输入?

当用户点击特定的HTML片段时,会使用JavaScript将内容显示为默认值与所选HTML标记匹配的元素。

编辑完成后,将解析输入,更新页面,并从显示中删除表单输入。

这种方法会满足您的需求吗?