アプリのユーザーがドキュメントの説明を入力できる入力テキスト フィールドがあります。ページ読み込みイベントで、この入力フィールドが空かどうかを確認します。空の場合は、次のテキストを挿入し、スタイルを斜体と赤に変更します。
このドキュメントの説明を入力してください
ページがアクティブな間、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");
}
}
コードはページの読み込み時に実行されます。アラート ボックスが表示され1
、2
各アラート ボックスの後にこの要素の html を視覚的に調べることができます)。
スタイルは追加されていません!このコードは実行されたが無視されたかのようです...
私は何を間違っていますか?