0

Placeholders.jsをプレースホルダー ポリフィルとして使用していますが、Opera Mini とは別に正常に動作しますが、これはプロキシ ブラウザーであるためです。Opera Mini のプレースホルダー ポリフィルを持っている人はいますか?

4

2 に答える 2

0

Opera Miniのサポート onfocusonblurイベント。したがって、ハンドラーを追加して、イベントでプレースホルダーを非表示にし、focusイベントで表示することができますblur(単純なケース)。

iOS Opera Mini と Android Opera Mini(最新バージョン) の私のテストでは、ドキュメントのこのビデオdoneのようにデバイスのキーボードを押した場合にのみ、プレースホルダーのポリフィルが正常に機能することが示されています。キーボードの外側をタップすると、テキスト入力はフォーカスを失いますが、ブラー ハンドラーはトリガーされません。また、Opera Mini レンダリングはお使いのデバイス上で実行されないため、そのような動作は当てはまりません。詳細はこちら

私のテスト コードでは、2 つのテキスト入力を含むフォームを作成し、最初の入力ハンドラーを属性に追加します。2 番目の入力では、 を使用してハンドラーを追加しますaddEventListener

HTML:

  <form action="">
    <input type=text value="Аttributes handler" onfocus="(this.value === 'Аttributes handler') && (this.value = '')" onblur="(this.value === '') && (this.value = 'Аttributes handler')">
    <br><br>
    <input type=text value="" data-placeholder="Listener handler">
  </form>

Javascript:

document.addEventListener('DOMContentLoaded', function () {
  var listenerInputNode = document.querySelector('input:last-child'),
      placeholderText = listenerInputNode.getAttribute('data-placeholder');

  (listenerInputNode.value === '') && (listenerInputNode.value = placeholderText);

  listenerInputNode.addEventListener('focus', function () {
    (this.value === placeholderText) && (this.value = '');
  }, false);
    listenerInputNode.addEventListener('blur', function () {
    (this.value === '') && (this.value = placeholderText);
  }, false);

});

したがって、Opera Mini にはプレースホルダー用のポリフィルが実際に機能していると思いますが、focus/blurイベントは実際には期待どおりに起動しません。

于 2015-02-11T09:02:49.747 に答える