1

アプリのユーザーがドキュメントの説明を入力できる入力テキスト フィールドがあります。ページ読み込みイベントで、この入力フィールドが空かどうかを確認します。空の場合は、次のテキストを挿入し、スタイルを斜体と赤に変更します。

このドキュメントの説明を入力してください

ページがアクティブな間、onblurとイベントのイベント リスナーがあります。onfocus

基本的に、ユーザーがテキスト フィールドをクリックすると、CSS を通常の黒に戻し、値を空の文字列に戻します。

Onblur内容を確認します。空の場合は、「入力してください...」というメッセージと赤/斜体の CSS に戻ります。空でない場合は、ユーザー入力をそのまま保持します。

私が抱えている問題は、最初のページの読み込み後、ユーザーがルックアップを行うために別のページに移動してから戻ってきた場合、ドキュメントの説明を変更していないため、「入力してください... "、赤と斜体の CSS は有効になりません。

これは、すべてのブラウザーで Firefox で発生しています。

onloadブラウザ全体でページイベントを登録する方法は次のとおりです-

//Microsoft Internet Explorer Browser - iFrame event register
if (navigator.appName.indexOf("Microsoft") != -1) {
  var frame = getPortlet();

  frame.contentWindow.location.replace('${channelUrl}');
  var prevPortletLoadEvent = frame.onload ? frame.onload : function () {};
  var refresh = function() {
    prevPortletLoadEvent();
    resizePortletContainer();
    attachTinyButtonListener();
    attachDocumentDescriptionListener();
    enforceDocumentDescriptionStyleIfNecessary();
  };

  if(frame.attachEvent) { frame.attachEvent('onload', refresh); } //IE browsers before version 9
  else  { frame.addEventListener('load', refresh, false); }
}

//All other major browsers - iFrame event register
else {
  var frame = getPortlet();
  var prevPortletLoadEvent = frame.onload ? frame.onload : function () {};
  frame.onload = function () {
    prevPortletLoadEvent();
    resizePortletContainer();
    attachTinyButtonListener();
    attachDocumentDescriptionListener();
    enforceDocumentDescriptionStyleIfNecessary();
  };

  var prevPortletResizeEvent = frame.onresize ? frame.onresize : function () {};
  var onresize = function () {
    prevPortletResizeEvent();
    resizePortletContainer();
    attachTinyButtonListener();
    attachDocumentDescriptionListener();
    enforceDocumentDescriptionStyleIfNecessary();
  };
}

そして、ここにenforeDocumentDescriptionStyleIfNecessary-

function enforceDocumentDescriptionStyleIfNecessary() {

  var  efrm  = getPortlet();
  var  e_doc = efrm.contentDocument ? efrm.contentDocument: efrm.contentWindow.document;
  var  e_docElement = e_doc.getElementById('document.documentHeader.documentDescription');
  if (e_docElement.value == 'Please enter a description for this document') {


    e_docElement.style = 'italic';
alert("1");    
    e_docElement.color = 'red';
alert("2");
  }
}

コードはページの読み込み時に実行されます。アラート ボックスが表示され12各アラート ボックスの後にこの要素の html を視覚的に調べることができます)。

スタイルは追加されていません!このコードは実行されたが無視されたかのようです...

私は何を間違っていますか?

4

1 に答える 1

1

要素のスタイルを正しく設定していません。そのはず:

e_docElement.style.fontStyle = 'italic';
e_docElement.style.color = 'red';

style要素のインライン css を変更するには、常にプロパティを使用する必要があります。

于 2013-01-03T18:46:55.213 に答える