2

更新:以下の推奨事項に従って、具体的には次のようにします。「青緑」の「b」から「n」までの任意の場所でマウスカーソルをダブルクリックすると、「」という単語がすべて必要になります。青緑」が強調表示されます。これはどのように行うことができますか?現在、クリックした場所に応じて、「青緑」は3つの別個の文字列として扱われます。したがって、「青」の「b」と「e」の間をダブルクリックすると、「-緑」ではなく「青」のみが強調表示されます。ハイフンをダブルクリックすると、ハイフンだけが強調表示されます。また、「緑」の「g」と「n」の間をダブルクリックすると、「青」ではなく「緑」のみが強調表示されます。

オリジナル:ハイフンでつながれた単語または文字のセット(「123-abc」や「blue-green」など)をダブルクリックすると、ダブルクリックした単語の部分だけが強調表示されます。単語全体を強調表示したいのですが。

私はWindows7Proを使用しています。アプリケーションごとに行う必要がある場合は、Google Chrome用に修正することに最も関心がありますが、Windows互換のWebブラウザーであれば問題ありません。

4

2 に答える 2

1

古い質問ですが、たまたま同じ問題に取り組んでいました。これが私の解決策です:

jsFiddle.net

"use strict"

// Tweak to make a double-click select words with hyphens
// 
// As of 2016-0816, None of the major Mac browser selects whole words
// with hyphens, like "ad-lib". This tweak fixes the hypen issue.
// 
// Note: Firefox 48.0 doesn't automatically select whole words with 
// apostrophes like "doesn't". This tweak also treats that.

;(function selectWholeWordsWithHyphens(){
  var pOutput = document.getElementById("output")
  var selection = window.getSelection()
  // Regex designed to find a word+hyphen before the selected word.
  // Example: ad-|lib|
  // It finds the last chunk with no non-word characters (except for
  // ' and -) before the first selected character. 
  var startRegex = /(\w+'?-?)+-$/g
  // Regex designed to find a hyphen+word after the selected word.
  // Example: |ad|-lib
  var endRegex = /^-('?-?\w+)+/
  // Edge case: check if the selection contains no word
  // characters. If so, then don't do anything to extend it.
  var edgeRegex = /\w/

  document.body.ondblclick = selectHyphenatedWords

  function selectHyphenatedWords(event) {
    if (!selection.rangeCount) {
      return
    }
    var range = selection.getRangeAt(0)
    var container = range.startContainer
    var string = container.textContent
    var selectionUpdated = false

    if (string.substring(range.startOffset, range.endOffset)
              .search(edgeRegex) < 0) {
      // There are no word characters selected
      return
    }

    extendSelectionBackBeforeHypen(string, range.startOffset)
    extendSelectionForwardAfterHyphen(string, range.endOffset)

    if (selectionUpdated) {
      selection.removeAllRanges()
      selection.addRange(range)
    }

    function extendSelectionBackBeforeHypen(string, offset) {
      var lastIndex = 0
      var result
        , index
      string = string.substring(0, offset)

      while (result = startRegex.exec(string)) {
        index = result.index
        lastIndex = startRegex.lastIndex
      }

      if (lastIndex === offset) {
        range.setStart(container, index)
        selectionUpdated = true
      }
    }

    function extendSelectionForwardAfterHyphen(string, offset) { 
      if (!offset) {
        return
      }

      string = string.substring(offset)
      var result = endRegex.exec(string)

      if (result) {
        range.setEnd(container, offset + result[0].length)
        selectionUpdated = true
      }
    }
  }
})()
于 2016-08-17T20:38:22.690 に答える
-1

すべてのプログラムは、オペレーティング システムのタイピング構成/プログラムのことから外れて実行されるため、それを行うのはすべてのプログラムの標準です。これを修正するには、System32 で何かを行う必要があります。あなたが何をする必要があるのか​​ わかりませんが、これがあなたの問題だと思います. 具体的に何を望んでいるかについては、おそらくもっと詳しく説明する必要があります。

于 2012-11-20T20:26:14.243 に答える