いつもお世話になっております。
Javascriptで配列の値をCSVに出力する処理があり、うまく動作しないということで調べてみたところ、
FFやChromeでは正常に動作しているにも関わらず、IE11だと動作しないということが判りました。
スクリプトの部分は、外部ファイルとしてインクルードしているせいなのか、コンソールにも何も表示されません。
インクルード部分を展開して、元のソースに貼り付けたところ、配列上で文字を検索する時の、findメソッドが効いていないことが判り、
下記のように、forループで検索する方法に書き換えました。このソース自体はあまり関係ないかもしれませんがいちおう記載します。
javascript
1 keyOrder.forEach(function( key ) { 2 // 2021/02/22 列属性の取得 3 //const col = col_list.find((p) => { 4 // return (p.name === key); 5 //}); 6 //let intatr = false; 7 //if (col.sorttype){ 8 // if (col.sorttype === "int"){ 9 // intatr = true; 10 // } 11 //} 12 // 2021/03/15 findはIE11で使えないため上記をforループで検索する方法に変更 13 let intatr = false; 14 for(var i=0;i<col_list.length;i++){ 15 if( key === col_list[i].name ){ 16 if (col_list[i].sorttype){ 17 if (col_list[i].sorttype === "int"){ 18 intatr = true; 19 } 20 } 21 } 22 } 23 // 24 } 25
この結果、IE11上でも正常に動くようになり、コンソール上でもエラーは出なくなりました。FFやChromeでも動きました。
ところが、この変更内容を元のインクルードファイル(ListToCsv9.js)に反映させたところ、また動作しなくなりました。
Javascript
1<script type="text/javascript" src="myjs/ListToCsv9.js"></script> 2<script> 3// ここに記述したところ動作した 4</script> 5<script type="text/javascript"> 6var keyOrder = [ 7 "sudshcd", 8 "suhurno", 9 "sudurgn", 10 "suhurdt", 11 "zqty", 12 "ztn", 13 "qty", 14 "tn", 15 "tan", 16 "kin", 17 "suhbiko" 18]; 19</script>
変数keyOrderの部分はフォーム毎に内容が異なるため、各html内に記述してあります。
インクルードの順序をkeyOrderの後ろに替えてみても結果は同じでした。
未だにIE11でしか動かないアプリがあり、まだ標準ブラウザをIE11にしているため、なんとか解決したいのですが、エラー内容がコンソールにも出てこないので、原因が判らず、対処方法が見つからないため困っています。
また、実行環境は、フレームワーク上で動いており、主要な処理はサーバーサイドのJavascriptで作成しているのですが、CSVにダウンロードする処理が実装しにくいため、この部分だけ、クライアントサイドのJavascriptで書いています。
このため、keyOrder以外の変数はサーバーサイドから受け取った変数でもあります。
したがって、全文をお見せすることが困難でこれだけでは情報が足りないかもしれません。
インクルードすると動かない、考えられる理由がありましたら、ご教授頂けたら有難いです。
また、IE11でこうした状況をデバッグする方法はないでしょうか?
よろしくお願い致します。
あなたの回答
tips
プレビュー