IE用に作られたASP.NETのアプリを、Chrome対応(Chromium Edge対応)しているときに、JavaScriptでASP.NETのパーツのテキストボックス(type=text)に値をいれたところ、値が入らないということがおきた。「getElementById(“ID”).value」に、JavaScriptから値をいれたが、IE11では問題ないのに、Chromeだと値が入らなかった。
document.getElementById("ID").value = "値";
// ↑これだと、IE11は値が入るが、Chromeだと入らない。
PostBackは発生させていない処理なのだが。いろいろと調べていき、Chromeの場合は「.defaultValue」を使って初期状態の値を書き換えれば、画面の表示が変わることを確認できた。
document.getElementById("ID").defaultValue = "値";
// ↑Chromeの場合は、defaultValueを書き換える。
IE11も残しておく必要があったので、ブラウザの種類をみて、IF文でIEとそれ以外で分岐させるようにした。
サンプル。
// ブラウザを取得する
var userAgent = window.navigator.userAgent.toLowerCase();
if (userAgent.indexOf('msie') != -1) {
// IEのときの処理を書く
document.getElementById("ID").value = "aaaa";
} else {
// IE以外の処理。ChromeやChromium Edgeの想定
// document.getElementById.value だと、画面上の表示が変わらないことがわかった。
// そのため、document.getElementById.defaultValue に変更したところ、うまくいった。
document.getElementById("ID").defaultValue = "aaaa";
}