AngularStrapツールチップ内の要素に確実にフォーカスを設定するにはどうすればよいですか?

ユーリ・ドガンジエフ

私のチームはAngularStrapを使用して、Bootstrapモーダル(ポップオーバー、ツールチップなど)をAngular1.5アプリに統合しています。残念ながら、AngularStrapが要素を表示するファンキーな方法のため、これらのモーダル内の要素に確実にフォーカスを設定することは非常に困難であることがわかりました。このロジックはここにあります:

https://github.com/mgcrea/angular-strap/blob/b13098d9d658da9408930b25f79182df920718d2/src/tooltip/tooltip.js

基本的に、すべてのAngularStrapモーダルは非表示の状態で始まります。

// Set the initial positioning.  Make the tooltip invisible
// so IE doesn't try to focus on it off screen.
tipElement.css({top: '-9999px', left: '-9999px', right: 'auto', display: 'block', visibility: 'hidden'});

次に、内部のAngularrequestAnimationFrameサービスコールバックに応答して表示されます。

$$rAF(function () {
  // Once the tooltip is placed and the animation starts, make the tooltip visible
  if (tipElement) tipElement.css({visibility: 'visible'});
  ...
});

残念ながら、これは、ツールチップのすべてのDOM要素が構築された時点で、ツールチップは通常まだ表示されておらず、これらの要素でfocus()を呼び出そうとしても失敗することを意味します。私の経験では、これは断続的に発生することに注意してください(私にとっては時間の約20%)。

ツールチップでアニメーションを無効にしてみましたが、その場合、この非表示/表示のダンス全体をスキップするほど賢くはないようです。私は明らかに超ハッキーなものを試すことができます(たとえば、フォーカスを設定する前に任意のタイムアウトを使用する)が、より信頼性の高いオプションを探しています。

davidkonrad

onShowイベントを利用してみませんか?少し間違って文書化されていますが、要素をフォーカスするハンドラーをアタッチできますbs-on-showさらに、ハンドラーを汎用にして、次のようなfocus-me属性とフォーカスを持つ要素を探すことができます

<div bs-popover
  data-content='this input should be focused: <input type="text" focus-me>'
  data-placement="bottom"
  bs-on-show="setFocus"
  data-html="true">
    click me to show popover
</div>

<div bs-tooltip
  data-title='this input should be focused: <input type="text" focus-me style="color:#000;">'
  data-placement="bottom"
  data-trigger="click"
  bs-on-show="setFocus"
  data-html="true">
    click me to show tooltip
</div>   

ジェネリックハンドラー

$scope.setFocus = function(e) {
  e.$element.find('[focus-me]').focus()    
} 

http://plnkr.co/edit/3wTinmNb5zsKnfUZQ9tT?p=preview

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

同じ要素に異なるツールチップと確認のタイトルを設定するにはどうすればよいですか?

分類Dev

uifigureの特定の要素にフォーカスを設定するにはどうすればよいですか?

分類Dev

ツールチップ内でフォームを作成するにはどうすればよいですか?

分類Dev

ツールチップの幅を動的に設定するにはどうすればよいですか?

分類Dev

InputText要素にフォーカスを設定するにはどうすればよいですか?

分類Dev

ツールチップの幅を親要素とまったく同じように設定するにはどうすればよいですか?

分類Dev

コンテンツタイプの編集モードで、リッチテキストフィールドにフォーカスを設定するにはどうすればよいですか?

分類Dev

ブートストラップツールチップでフォーム要素を表示するにはどうすればよいですか?

分類Dev

最初のフォーカス可能な要素jQueryにフォーカスを設定するにはどうすればよいですか?

分類Dev

ブートストラップスイッチャーをデフォルトでオンに設定するにはどうすればよいですか?

分類Dev

バッチスクリプトを使用して、そのフォルダー内に設定された数のファイルがある複数のフォルダーの名前を変更するにはどうすればよいですか?

分類Dev

WYMeditorボックスの最後にカーソルを移動してフォーカスを設定するにはどうすればよいですか?

分類Dev

idから独立したHTMLフォームの最初の入力要素にフォーカスを設定するにはどうすればよいですか?

分類Dev

スパン要素にツールチップを追加するにはどうすればよいですか?

分類Dev

JavaScriptを使用してHTMLフォームの要素にフォーカスを設定するにはどうすればよいですか?

分類Dev

フレームワーク4.0のすべてのスレッドにUIカルチャを設定するにはどうすればよいですか?

分類Dev

ツールチップ内にリストを表示するにはどうすればよいですか?

分類Dev

アンカーにフォーカスを設定するにはどうすればよいですか?

分類Dev

JtextFieldにカスタムツールチップを追加するにはどうすればよいですか?

分類Dev

カーネルコードのデフォルトのARMプロセッサ状態を設定するにはどうすればよいですか?

分類Dev

Vuejs 2のv-for内にレンダリングされるtextareaにフォーカスを設定するにはどうすればよいですか?

分類Dev

ツールチップよりも狭い要素の下にツールチップを中央揃えするにはどうすればよいですか?

分類Dev

ツールチップよりも狭い要素の下にツールチップを中央揃えするにはどうすればよいですか?

分類Dev

ループ内の動的チェックボックスの状態をreactで設定するにはどうすればよいですか?

分類Dev

ボタンを押して、ビュー内の次のTextFieldにフォーカスを設定するにはどうすればよいですか?

分類Dev

テーブル内の正確な位置にツールチップを表示するにはどうすればよいですか?

分類Dev

テーブル内の正確な位置にツールチップを表示するにはどうすればよいですか?

分類Dev

グラフの各データポイントにカスタムツールチップを作成するにはどうすればよいですか?

分類Dev

HTML <テーブル>内の<td>要素に列を設定するにはどうすればよいですか?

Related 関連記事

  1. 1

    同じ要素に異なるツールチップと確認のタイトルを設定するにはどうすればよいですか?

  2. 2

    uifigureの特定の要素にフォーカスを設定するにはどうすればよいですか?

  3. 3

    ツールチップ内でフォームを作成するにはどうすればよいですか?

  4. 4

    ツールチップの幅を動的に設定するにはどうすればよいですか?

  5. 5

    InputText要素にフォーカスを設定するにはどうすればよいですか?

  6. 6

    ツールチップの幅を親要素とまったく同じように設定するにはどうすればよいですか?

  7. 7

    コンテンツタイプの編集モードで、リッチテキストフィールドにフォーカスを設定するにはどうすればよいですか?

  8. 8

    ブートストラップツールチップでフォーム要素を表示するにはどうすればよいですか?

  9. 9

    最初のフォーカス可能な要素jQueryにフォーカスを設定するにはどうすればよいですか?

  10. 10

    ブートストラップスイッチャーをデフォルトでオンに設定するにはどうすればよいですか?

  11. 11

    バッチスクリプトを使用して、そのフォルダー内に設定された数のファイルがある複数のフォルダーの名前を変更するにはどうすればよいですか?

  12. 12

    WYMeditorボックスの最後にカーソルを移動してフォーカスを設定するにはどうすればよいですか?

  13. 13

    idから独立したHTMLフォームの最初の入力要素にフォーカスを設定するにはどうすればよいですか?

  14. 14

    スパン要素にツールチップを追加するにはどうすればよいですか?

  15. 15

    JavaScriptを使用してHTMLフォームの要素にフォーカスを設定するにはどうすればよいですか?

  16. 16

    フレームワーク4.0のすべてのスレッドにUIカルチャを設定するにはどうすればよいですか?

  17. 17

    ツールチップ内にリストを表示するにはどうすればよいですか?

  18. 18

    アンカーにフォーカスを設定するにはどうすればよいですか?

  19. 19

    JtextFieldにカスタムツールチップを追加するにはどうすればよいですか?

  20. 20

    カーネルコードのデフォルトのARMプロセッサ状態を設定するにはどうすればよいですか?

  21. 21

    Vuejs 2のv-for内にレンダリングされるtextareaにフォーカスを設定するにはどうすればよいですか?

  22. 22

    ツールチップよりも狭い要素の下にツールチップを中央揃えするにはどうすればよいですか?

  23. 23

    ツールチップよりも狭い要素の下にツールチップを中央揃えするにはどうすればよいですか?

  24. 24

    ループ内の動的チェックボックスの状態をreactで設定するにはどうすればよいですか?

  25. 25

    ボタンを押して、ビュー内の次のTextFieldにフォーカスを設定するにはどうすればよいですか?

  26. 26

    テーブル内の正確な位置にツールチップを表示するにはどうすればよいですか?

  27. 27

    テーブル内の正確な位置にツールチップを表示するにはどうすればよいですか?

  28. 28

    グラフの各データポイントにカスタムツールチップを作成するにはどうすればよいですか?

  29. 29

    HTML <テーブル>内の<td>要素に列を設定するにはどうすればよいですか?

ホットタグ

アーカイブ