前提・実現したいこと
表示用HTMLを加工できる、検索プログラムのカスタマイズをしています。
具体的には、ファイル検索プログラムEverythingの表示用HTMLをカスタマイズしています。
Everything
http://www.voidtools.com/support/everything/
日本語ヘルプ
https://sites.google.com/site/everythingjphelp/http
GETリクエストを自分に投げるタイプなので、URLからフォームの選択状態は判別できます。
なのでJavaScryptでURLを取得して、判別してHTMLフォームに反映するようにしたのですが
Chrome、Firefoxでは動作しますが、Internet Explorer 11では動作しません。。。
どうすればIEでも動くようになるでしょうか…?
よろしくお願いします。
発生している問題・エラーメッセージ
エラーメッセージはありません。
ただ、チェックボックス、セレクトボックスの選択位置がデフォルトに戻り
前回検索時の選択が反映されないです。。。
該当のソースコード
HTML
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 2<head> 3<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 4<meta name="viewport" content="width=512"> 5<title>Files Search</title> 6<link rel="stylesheet" href="/ress.css" type="text/css"> 7<link rel="stylesheet" href="/main.css" type="text/css"> 8<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 9<script src="/jquery.min.js" type="text/javascript"> 10</script> 11<script src="/scripts.js" type="text/javascript"> 12</script> 13</head> 14<body> 15 16 17~説明文~ 18 19 20<center> 21 <div class="input-part"> 22 <form class="search-form" name="sf" action="/" method="get"> 23 <input class="normalizebox" style="width:480px" name="search" type="text" title="Search Everything" value="" > 24 <input type="submit" value="検索" /> 25 <br> 26 <input type="checkbox" name="path" value="1" checked="checked">フォルダ名も検索対象 // 表示件数: 27 <select name="count"> 28 <option value="30">30件</option> 29 <option value="50">50件</option> 30 <option value="100">100件</option> 31 <option value="500">500件</option> 32 </select> 33 <br> 34 </form> 35 </div> 36 37 38~検索結果表示~ 39 40 41</center> 42</body>
JS
1// ---------------------------------------------------------------------- 2// scripts.js 3// IE用につくりなおしたもの 4// ---------------------------------------------------------------------- 5// ◆定義 6 7// 2.URLからパラメータ取得しHTMLに反映 8var params = (new URL(document.location)).searchParams; 9var path = Boolean(params.get("path")); 10var count = parseInt(params.get("count")); 11var paramOld = location.search; 12// ---------------------------------------------------------------------- 13// ◆読み込み時実施 14$(function() { 15 16// 2.パラメータ取得しHTMLに反映 17 18 // 旧ブラウザ補完 19 if (!path) { 20 paramOld = paramOld.substring(1); 21 /* 「&」で引数を分割して配列に */ 22 var pair = paramOld.split("&"); 23 var i = temp = ""; 24 var key = new Array(); 25 for (i = 0; i < pair.length; i++) { 26 /* 配列の値を「=」で分割 */ 27 temp = pair[i].split("="); 28 keyName = temp[0]; 29 keyValue = temp[1]; 30 /* キーと値の連想配列を生成 */ 31 key[keyName] = keyValue; 32 } 33 var path = count = ""; 34 path = Boolean(key["path"]); 35 count = parseInt(key["count"]); 36 } 37 //チェックボックス選択復帰 38 document.sf.path.checked = !!(path); 39 //セレクトボックス選択復帰 40 document.sf.count.value = count; 41});
JS
1// ---------------------------------------------------------------------- 2// scripts.js 3// Chrome用でうまくいったもの 4// ---------------------------------------------------------------------- 5// ◆定義 6// 2.URLからパラメータ取得しHTMLに反映 7var params = (new URL(document.location)).searchParams; 8var path = Boolean(params.get("path")); 9var count = parseInt(params.get("count")); 10// ---------------------------------------------------------------------- 11// ◆読み込み時実施 12$(function() { 13// 2.パラメータ取得しHTMLに反映 14 //チェックボックス選択復帰 15 document.sf.path.checked = !!(path); 16 //セレクトボックス選択復帰 17 document.sf.count.value = count; 18}); 19
試したこと
URL.searchParamsがうまくいかない、というような情報を見つけたので
location.searchでURL取得処理を追加しました。
◆定義 部分の上三行をコメントアウトしてもChromeでは動くので、
うまくいっていると思ったのですが…。
補足情報(FW/ツールのバージョンなど)
元プログラムの仕様上、HTMLサーバを立てているわけではないので
PHPほかの作り込は難しいです。
HTML+JavaScriptで、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/28 08:38
2018/08/28 08:51 編集
2018/08/28 09:04