【问题标题】:Determine the 'Overtype' mode using Javascript使用 Javascript 确定“改写”模式
【发布时间】:2016-08-09 18:32:57
【问题描述】:

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

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

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

(我确实知道一种解决方案是检查 Insert 键的按键。但是,我希望避免这种解决方案,因为该方法似乎有点不稳定且容易出错,因为我无法保证用户在点击我的页面之前会处于什么模式。)

这个问题背后的原因:

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

例如粗制滥造。

此保单的自付额为:$xxxxxx,最高限额为:$xxxxxx 保单日期为:xx/xx/xxxx,到期日为:xx/xx/xxxx 其他一些不相关的文字

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

(需要说明的是,如果他们愿意,他们仍然可以编辑“预格式化文本”的任何部分。通常情况下,他们只是希望替换文本的特定部分。保持对齐很重要,因为这些文本部分可能会出现在打印文档上。)

当然,只需先选择要替换的 x 就可以达到相同的效果,但允许使用旧的做事以继续工作,同时仍然允许更精通技术的用户使用“网络方法”。

基本上,我们正在努力使从绿屏应用到 Web 应用的初始过渡尽可能顺畅,以尽量减少来自长期绿屏应用的阻力。

【问题讨论】:

  • 有没有浏览器有over type模式?
  • 解释你的问题,你在什么情况下需要它
  • Krish:IE 确实...在文本区域中。
  • 你想知道插入键是否被按下?
  • 我们正在创建一个 Web 应用程序来替换老式的绿屏应用程序。在绿屏应用程序中,当用户按下 Insert 键在改写和插入模式之间切换时,光标会改变以指示用户当前处于哪种输入模式。在 IE(这是公司的官方浏览器)中,改写模式也可以工作,但在用户开始输入并可能意外覆盖现有信息之前,没有视觉指示是否打开了改写模式。如果处于改写模式,我想在屏幕上放置某种视觉指示器。

标签: javascript


【解决方案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",因此可能永远不会支持“插入”键。

【讨论】:

  • 我添加了编辑并赞成,因为 another stack question 被标记为重复,所以我认为答案值得“合并”。
【解决方案2】:

问题是如果用户在进入你的页面后按下插入键,那么你可以很容易地找到它。

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

【讨论】:

    【解决方案3】:

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

    “改写”功能在旧的 ANSI 演示文稿中提供了哪些实用程序,而这在网络上是不可用的?

    除非我完全误解了您的问题(如果是,请道歉),我觉得开发意图可能与用户期望和典型的网络约定不太一致。

    如果目标是生成一个页面,其中:

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

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

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

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

    这种方法适合您的需要吗?

    【讨论】:

    • @nathan:不幸的是,你误解了我的意图。我已经修改了这个问题,进一步澄清了我想要实现的目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 1970-01-01
    • 2022-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多