SQLの窓 イラストAC フリー素材

2021年07月29日

HTA : JScript : Excel.Application でファイルを開くダイアログを使用する

通常だと、ダイアログが IE11 の後ろに隠れてしまうので、ダイアログを表示させる間、Excel 本体を表示させています(本体にアクセスはできません)。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta charset="utf-8">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.0.1/css/bootstrap.min.css">

<script>
var excel = null;

$(function(){

    // Excel でファイルを開くダイアログ	
    $("#open_file_dialog").on("click", function(){
    
        // Excel をロード
        excel = new ActiveXObject("Excel.Application");

        // 表示
        excel.Visible = true;

        // 最小化して元のサイズと位置 : GetSaveAsFilename を前面に出す為
        // WScript.Shell の Run と同じ 2 と 1 が使える
        excel.WindowState = 2	// 最小化
        excel.WindowState = 1	// 元のサイズと位置

        excel.DisplayAlerts = false;

        // 一つのファイルを開く
        // https://docs.microsoft.com/ja-jp/office/vba/api/excel.application.getopenfilename
        var filePath = excel.GetOpenFilename("全て,*.*,CSV,*.csv", 1,"ファイルの選択",null, false );
        // 非表示
        excel.Visible = false;

        // 未選択の場合
        if( filePath === false ) {
            alert("ファイルの参照選択がキャンセルされました")
        }
        // 選択の場合
        else {
            alert(filePath + " を選択しました");
        }

        // Excel を終了
        excel.Quit();
        excel = null;
        // Excel 解放
        var idTmr = window.setTimeout("Cleanup();",1);

    });

});
// ******************************
// Excel 解放
// ******************************
function Cleanup() {
    CollectGarbage();
}

</script>
</head>
<body>

    <div id="head" class="m-5">
        <input type="button" id="open_file_dialog" value="ファイルを開く">
    </div>

</body>
</html>



GitHub


posted by at 2021-07-29 15:48 | IE | このブログの読者になる | 更新情報をチェックする

2019年08月26日

IE11 : フォルダを選択して、フォルダ内のフォルダとファイルの一覧を jQuery で表示する

Windows の標準の COM では、ファイルを選択するダイアログを使用できません。( Excel がインストールされておれば使えます )

しかし、Shell.Application を使用すれば、フォルダの選択は可能なうえにファイルの一覧をフォルダオブジェクトより取得して利用可能です。

<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<meta charset="utf-8">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">

<link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css">

<script>
// Windows Shaell
var objShell = new ActiveXObject("Shell.Application");

$(function(){

	$("#action").on("click", function(){

		buildTable( );

	});

});

// ******************************
// jQuery でテーブル作成
// ******************************
function buildTable( ){

	// 1:0固定, 2:タイトル, 3:1はファイルシステムのみ, 4:0はルートがデスクトップ
	// 4:https://docs.microsoft.com/en-us/windows/win32/api/shldisp/ne-shldisp-shellspecialfolderconstants
	var objFolder = objShell.BrowseForFolder( 0, "フォルダ選択", 1, 0 );
	if ( objFolder == null ) {
		alert("フォルダの選択がキャンセルされました");
		return;
	}
	if ( !objFolder.Self.IsFileSystem ) {
		alert("ファイルシステムではありません");
		return;
	}

	// TABLE 部分クリア
	$("#tbl").html("");

	var objFolderItems = objFolder.Items();

	var nFiles = objFolderItems.Count;
	var arrData = [];

	// フォルダとファイルの一覧を配列にセット
	var nFiles = objFolderItems.Count;
	for( i = 0; i < nFiles; i++ ) {
		var objItem = objFolderItems.Item(i)
		// フォルダの場合
		if ( objItem.isFolder ) {
			arrData.push( " [" + objItem.Name +"]" );
		}
		else {
			arrData.push( objItem.Name );
		}
	}

	arrData.sort();
	arrData.unshift("-------------------------------------------------------------");
	// 選択したフォルダのパス
	arrData.unshift(objFolder.Self.Path);

	// TABLE に一覧を作成する
	for( i = 0; i < nFiles; i++ ) {
		var tr = $("<tr class='rowdata'></tr>")
			.appendTo("#tbl");

		$("<td></td>")
			.appendTo(tr)
			.text(arrData[i]);
	}

}
</script>

</head>
<body>
	<div id="head">
		<input
			id="action"
			class="ml-4 btn btn-outline-primary"
			type="button"
			value="フォルダ選択">
	</div>

	<div id="extend">
		<table class="table">
		<tbody id="tbl">

		</tbody>
		</table>

	</div>

</body>
</html>










posted by at 2019-08-26 13:30 | IE | このブログの読者になる | 更新情報をチェックする

2019年08月21日

IE11 : JScript : Excel.Application で既存の Book を開いてその中のテンプレートシートをコピーして名前を付けて保存する

IE11 の画面上の情報を決められた書式を使用して転送して新たにブックを作成する処理です。

印刷は、Excel を Windows から開いて実行します。

印刷内容は随時変更して自由度の高い業務作業を実現する事ができます。
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<meta charset="utf-8">
<title>ブックを開いてシートをコピーして使用する</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">

<link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css">

<script>
// ****************************
// Excel.Application 用
// ****************************
var Excel = null;
var Book = null;
var Worksheet = null;
var WshShell = new ActiveXObject("WScript.Shell");

$(function(){

	$("#action").on("click", function(){
	
		if ( Excel == null ) {
			// ****************************
			// 基本オブジェクトを作成
			// ****************************
			Excel = new ActiveXObject("Excel.Application");
		}

		// ****************************
		// 表示( テストの時は表示 )
		// ****************************
		Excel.Visible = true;

		// ****************************
		// 警告を出さないようにする
		// 使用すると上書きの警告が
		// 出なくなります
		// ****************************
		Excel.DisplayAlerts = false;

		// ****************************
		// 対象
		// ****************************
		var filePath = "c:\\temp\\test.xlsx";
		var filePath2 = "c:\\temp\\test2.xlsx";

		// ****************************
		// ブックを開く
		// ****************************
		Book = Excel.Workbooks.Open(filePath);

		// ****************************
		// シート名で直前にコピー
		// ****************************
		Book.Sheets("新しい情報").Copy( Book.Sheets("新しい情報") );
		Book.ActiveSheet.Name = "コピーしたシート";
		Book.Worksheets("コピーしたシート").Select();		// 無くても OK
		Worksheet = Book.ActiveSheet;

		// ****************************
		// シート内のセルをコピー
		// ****************************
	    Worksheet.Range("A1:K5").Select();
	    Excel.Selection.Copy();
	    Worksheet.Range("A6").Select();
	    Excel.ActiveSheet.Paste();

		try {
			Book.SaveAs(filePath2);
			Book.Close();
		}
		catch (e) {
			alert("Book.Save でエラーが発生しました");

			console.dir(e);
			ExcelQuit();
			return;
		}

		ExcelQuit();

		// ****************************
		// 終了確認
		// ****************************
		alert("処理が終了しました \n\n 保存したブックを開きます");

		// ****************************
		// Windows からの Excel 起動
		// ****************************
		WshShell.Run( "RunDLL32.EXE shell32.dll,ShellExec_RunDLL " + filePath2 );

	});

});

// ****************************
// 終了処理
// ****************************
function ExcelQuit() {
	Excel.Quit();
	Excel = null;
	idTmr = window.setTimeout("Cleanup();",1);
}
function Cleanup() {
	CollectGarbage();
}
</script>
</head>
<body>
	<div id="head">
		<input id="action" type="button" value="ブックを開いて処理を実行" class="btn btn-primary">
	</div>

	<div id="extend">
		<table class="table">
		<tbody id="tbl">
			<tr><th>実行手順概要</th><th>テンプレートシートを使って新しいシートを作成して、新しいブックとして結果を保存</th></tr>
			
			<tr><td>1</td><td>開く</td></tr>
			<tr><td>2</td><td>テンプレートシート名で直前にコピー</td></tr>
			<tr><td>3</td><td>新しいシート名セット</td></tr>
			<tr><td>4</td><td>シート内のセルをクリップボードでコピー</td></tr>
			<tr><td>5</td><td>名前を付けて保存</td></tr>

		</tbody>
		</table>

	</div>

</body>
</html>





posted by at 2019-08-21 16:16 | IE | このブログの読者になる | 更新情報をチェックする

IE11 : JScript : Excel.Application で新しい Excel の Book を作成する

Excel.Application は、常にメモリ上に置くのは問題が出ると困るので、実行毎に開放します。

ここで実行している機能は
1) ブックを追加
2) デフォルトシートの名称変更
3) シートを前のシートの後ろにもう一つ追加
4) 列の表示形式の設定
5) ブラウザ上のデータを jQuery で セルに転送
6) セルの表示幅を自動調整
7) 保存
8) Excel の終了と解放
<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<meta charset="utf-8">
<title>新しい Excel の Book を作成する</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">

<link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css">

<script>
// ****************************
// Excel.Application 用
// ****************************
var Excel = null;
var Book = null;
var Worksheet = null;
var WshShell = new ActiveXObject("WScript.Shell");

$(function(){

	$("#action").on("click", function(){
	
		if ( Excel == null ) {
			// ****************************
			// 基本オブジェクトを作成
			// ****************************
			Excel = new ActiveXObject("Excel.Application");
		}

		// ****************************
		// 表示( テストの時は表示 )
		// ****************************
		Excel.Visible = true;

		// ****************************
		// 警告を出さないようにする
		// 使用すると上書きの警告が
		// 出なくなります
		// ****************************
		Excel.DisplayAlerts = false;

		// ****************************
		// ブック追加
		// ****************************
		Excel.Workbooks.Add();

		// ****************************
		// 追加したブックを取得
		// ※ 新規なのて 1 番目
		// ****************************
		Book = Excel.Workbooks( Excel.Workbooks.Count );

		// ****************************
		// 先頭シートを選択する
		// ****************************
		Worksheet = Book.Worksheets( 1 );

		// ****************************
		// シート名設定
		// ( アクティブなので直接 )
		// ****************************
		Worksheet.Name = "新しい情報";

		// ****************************
		// Add では 第二引数に指定した
		// オブジェクトのシートの直後に、
		// 新しいシートを追加します。
		// ****************************
		Book.Worksheets.Add(null,Worksheet);

		// ****************************
		// シート名設定
		// ( 2番目のシート )
		// ****************************
		Book.Worksheets(2).Name = "予備情報";

		// ****************************
		// 新しい情報 シートを選択
		// ****************************
		Book.Worksheets("新しい情報").Select();

		// ****************************
		// コード列を文字列に設定
		// ****************************
		Worksheet.Columns("A:A").Select();
	    Excel.Selection.NumberFormatLocal = "@";
		Worksheet.Columns("D:D").Select();
		Excel.Selection.NumberFormatLocal = "@";
		Worksheet.Columns("J:J").Select();
		Excel.Selection.NumberFormatLocal = "@";

		// ****************************
		// セルへセット
		// ****************************
		// タイトル部分の参照
		$("#tbl th").each(function(idx){
			Worksheet.Cells(1, idx+1) = $(this).text();
		});

		// 行一覧の参照
		$("#tbl tr").each(function(row){
			$(this).find("td").each(function(idx){
				Worksheet.Cells(row, idx+1) = $(this).text();
			});
		});

		// ****************************
		// セルをデータに合わせて
		// 整理して左上を選択
		// ****************************
		Worksheet.Columns("A:K").Select();
		Worksheet.Columns("A:K").EntireColumn.AutoFit();
		Worksheet.Range("A1").Select();

		// ****************************
		// 保存
		// 拡張子を .xls で保存するには
		// Call ExcelBook.SaveAs( FilePath, 56 ) とします
		// ****************************
		var filePath = "c:\\temp\\test.xlsx";

		try {
			Book.SaveAs( filePath );
			Book.Close();
		}
		catch (e) {
			alert("Book.SaveAs でエラーが発生しました");

			console.dir(e);
			ExcelQuit();
			return;
		}

		ExcelQuit();

		// ****************************
		// 終了確認
		// ****************************
		alert("処理が終了しました \n\n 保存したブックを開きます");

		// ****************************
		// Windows からの Excel 起動
		// ****************************
		WshShell.Run( "RunDLL32.EXE shell32.dll,ShellExec_RunDLL " + filePath );

	});

});

// ****************************
// 終了処理
// ****************************
function ExcelQuit() {
	Excel.Quit();
	Excel = null;
	idTmr = window.setTimeout("Cleanup();",1);
}
function Cleanup() {
	CollectGarbage();
}
</script>
</head>
<body>
	<div id="head">
		<input id="action" type="button" value="Excel.Application の実行" class="btn btn-primary">
	</div>

	<div id="extend">
		<table class="table">
		<tbody id="tbl">
			<tr><th>社員コード</th><th>氏名</th><th>フリガナ</th><th>所属</th><th>性別</th><th>作成日</th><th>更新日</th><th>給与</th><th>手当</th><th>管理者</th><th>生年月日</th></tr>
			
			<tr><td>0001</td><td>山田 太郎</td><td>ウラオカ トモヤ</td><td>0003</td><td>0</td><td>2005-09-12</td><td>2005-11-28</td><td>400000</td><td>9000</td><td>0001</td><td>2012/03/21</td></tr>
			<tr><td>0002</td><td>山村 洋代</td><td>ヤマムラ ヒロヨ</td><td>0003</td><td>1</td><td>2005-06-17</td><td>2005-09-18</td><td>300000</td><td></td><td>0001</td><td>2001/01/02</td></tr>
			<tr><td>0003</td><td>多岡 冬行</td><td>タオカ フユユキ</td><td>0002</td><td>0</td><td>2005-08-14</td><td>2005-11-14</td><td>250000</td><td></td><td>0001</td><td>2001/01/01</td></tr>
			<tr><td>0004</td><td>高田 冬美</td><td>タカタ フユミ</td><td>0003</td><td>1</td><td>2005-06-13</td><td>2005-10-05</td><td>250000</td><td></td><td>0001</td><td>2001/01/01</td></tr>
			<tr><td>0005</td><td>内高 友之</td><td>ウチタカ トモユキ</td><td>0003</td><td>0</td><td>2005-09-12</td><td>2005-11-10</td><td>150000</td><td></td><td></td><td>2001/01/01</td></tr>

		</tbody>
		</table>

	</div>

</body>
</html>


IE11 のバグの対処方法( 英文 )

BUG: Excel Does Not Shut Down After Calling the Quit Method When Automating from JScript

IE11 の設定








posted by at 2019-08-21 14:16 | IE | このブログの読者になる | 更新情報をチェックする

2019年08月14日

IE11 : new ActiveXObject("ADODB.Connection") で .accdb のテーブル一覧を jQuery で TABLE に作成する

関連する記事

VBScript : 3種のMDB(または accdb)内の テーブル一覧取得方法

var cn = new ActiveXObject("ADODB.Connection");
var rs = new ActiveXObject("ADODB.Recordset");
var schema;

// ******************************
// データベースの接続
// ******************************
function connectDb(){

	// データベースの処理
	var path = "C:\\Users\\sworc\\Documents\\hanbaic-set\\hanbaic.accdb";
	var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";";

	cn.Open( connectionString );

	schema = cn.OpenSchema( 20, [,,,] );

}

// ******************************
// jQuery でテーブル作成
// https://docs.microsoft.com/ja-jp/sql/ado/reference/ado-api/schemaenum?view=sql-server-2017
// ******************************
function buildTable( ){

	while( !schema.EOF ) {

		var table_name = schema.Fields("TABLE_NAME").Value;
		if ( table_name.indexOf("MSys") == 0 ) {
			schema.MoveNext();
			continue;
		}

		var tr = $("<tr class='rowdata'></tr>")
			.appendTo("#tbl");

		$("<td></td>")
			.appendTo(tr)
			.css({
				"color": "#007bff",
				"text-decoration": "underline",
				"cursor": "pointer",
				"width": "250px"
			})
			.text(schema.Fields("TABLE_NAME").Value)
			// セルにイベントを作成
			.on("click", function(){

				console.log( $(this).text() );

			})
			;

		$("<td></td>")
			.appendTo(tr)
			.text(schema.Fields("TABLE_TYPE").Value);


		schema.MoveNext();
	}

	cn.Close();

}

$(function(){

	// ロード時の全ての行の表示
	connectDb();
	buildTable( );

});



※ これ以外に、ドメイン間のデーターソースのアクセスを【有効】にしてください

<!DOCTYPE html>
<html>
<head>
<meta content="width=device-width initial-scale=1.0 minimum-scale=1.0 maximum-scale=1.0 user-scalable=no" name="viewport">
<meta charset="utf-8">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.css">

<link rel="stylesheet" href="https://lightbox.sakura.ne.jp/demo/two-section.css">

<script>
var cn = new ActiveXObject("ADODB.Connection");
var rs = new ActiveXObject("ADODB.Recordset");
var schema;

// ******************************
// データベースの接続
// ******************************
function connectDb(){

	// データベースの処理
	var path = "C:\\httpd142p\\ie11\\hanbaic-set\\hanbaic.accdb";
	var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";";

	cn.Open( connectionString );

	schema = cn.OpenSchema( 20, [,,,] );

}

// ******************************
// jQuery でテーブル作成
// https://docs.microsoft.com/ja-jp/sql/ado/reference/ado-api/schemaenum?view=sql-server-2017
// ******************************
function buildTable( ){

	while( !schema.EOF ) {

		var table_name = schema.Fields("TABLE_NAME").Value;
		if ( table_name.indexOf("MSys") == 0 ) {
			schema.MoveNext();
			continue;
		}

		var tr = $("<tr class='rowdata'></tr>")
			.appendTo("#tbl");

		$("<td></td>")
			.appendTo(tr)
			.css({
				"color": "#007bff",
				"text-decoration": "underline",
				"cursor": "pointer",
				"width": "250px"
			})
			.text(schema.Fields("TABLE_NAME").Value)
			// セルにイベントを作成
			.on("click", function(){

				console.log( $(this).text() );

			})
			;

		$("<td></td>")
			.appendTo(tr)
			.text(schema.Fields("TABLE_TYPE").Value);


		schema.MoveNext();
	}

	cn.Close();

}

$(function(){

	$("#action").on("click", function(){

		// ロード時の全ての行の表示
		connectDb();
		buildTable( );

	});


});
</script>
</head>
<body>
	<div id="head">
		<input type="button" value="実行" id="action">
	</div>

	<div id="extend">
		<table class="table">
		<tbody id="tbl">

		</tbody>
		</table>

	</div>

</body>
</html>


関連する記事

下半分がスクロールするページ【 height: calc( 100% - 120px ) 】



posted by at 2019-08-14 21:09 | IE | このブログの読者になる | 更新情報をチェックする

IE11 + jQuery で、select( リスト)をタブルクリックした時に OPTION 要素の処理を行うコード

Google Chrome では、OPTION 要素に直接 dblclick イベントを作成できましたが、IE11 では無視されたので以下のようにして実装しました

select でイベントを作成して、その後選択されている場所が対象なので $(this).find(":selected") で参照します

※ デモページ
$(function(){

	// **************************************
	// 対象追加
	// **************************************
	$("#target").on("dblclick", function(){

		var target = $(this).val();

		$("#code option").each(function( idx ){

			if ( $(this).val() == target ) {
				alert( "この対象は既にセットされています" );
				target = null;
				return;
			}

		});

		if ( target != null ) {
			$("<option></option>")
				.val( target )
				.text( $(this).find(":selected").text() )
				.appendTo("#code")
			;
		}

	});

	// **************************************
	// メンバ削除
	// **************************************
	$("#code").on("dblclick", function(event){

		console.log("dblclick");

		$(this).find(":selected").remove();

	});

});



posted by at 2019-08-14 19:48 | IE | このブログの読者になる | 更新情報をチェックする

ActiveXObject("WScript.Shell" ) でコマンドプロンプトベースの外部プログラムより情報を取得

wscript.Run で、同期処理でコマンドプロンプトを表示せずに cmd.exe を呼び出して、標準出力に結果を出力するアプリを実行させてリダイレクトでファイルに書き込みます。

すぐにそのテキストを読み込んで、IE11 内の処理で使用します。

var wscript = new ActiveXObject("WScript.Shell" );

wscript.Run("cmd /c ipconfig > " + getFullPath("log.txt"),0 , true);
var infile = fs.OpenTextFile( getFullPath("log.txt"), 1 );
var text = infile.ReadAll();
infile.Close();







posted by at 2019-08-14 17:55 | IE | このブログの読者になる | 更新情報をチェックする

ActiveXObject("CDO.Message") でメール送信

ほぼほぼ IE11 での利用となります。





var cdo = new ActiveXObject("CDO.Message");

var server = "SMTPサーバー";
var port = 587; // または 465
var user = "ユーザ";
var from = "メールアドレス";
var pass = "パスワード";

// ***************************
// メール送信
// ***************************
function cdo_mail_send(to, subject, text_body) {

	// ***************************
	// 自分のアドレスと宛先
	// ***************************
	cdo.From = from
	cdo.To = to

	// ***************************
	// 件名と本文
	// ***************************
	cdo.Subject	= subject;
	cdo.Textbody = text_body;

	// ***************************
	// 設定
	// ***************************
	cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2;
	cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = server;
	cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = port;

	// ポートが 465 の場合は true に変更
	cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = false;

	cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
	cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = user;
	cdo.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = pass;

	// ***************************
	// 設定
	// ***************************
	cdo.Configuration.Fields.Update();

	// ***************************
	// 送信
	// ***************************
	try {
		cdo.Send();

		console.log( "cdo.Send() : " + to + ":" + subject);
	}
	catch (e) {
		console.dir(e);
		alert("cdo.Send() でエラーが発生しました");
	}

}

// http://logicalerror.seesaa.net/article/312259839.html




posted by at 2019-08-14 15:50 | IE | このブログの読者になる | 更新情報をチェックする

2015年09月26日

IE の『互換表示設定』に localhost を入れて忘れててえらい目にあった

▼ これです。


そもそも、IE8 以前に開発したイントラネットシステムを保守しつづける為にいろいろするわけですが、たぶんそのテストに使って削除するのを忘れてました。

自宅で処理するのは、ほぼ Google Chrome なので、影響も無く困らないから気づくはずも無く。でも、WEB アプリのテンプレートを作っていて、『お、IE もチェック』とページを表示したら、とんでもない事態に。

とにかく IE だけが動作しないので、なんとなく jQuery のバージョンを 1.9.1 に下げたらなんと・・・
ページを表示するだけで固まり、タスクマネージャーから停止させてもゾンビのように蘇る IE。再起動したり、開発者ツール開けたりしても、想像もつかないエラーばっかり。

で、以前動作確認した環境で使用した、x-ua-compatible: IE=8 のヘッダー入れると動作する。
・・・・???? 
さらに、x-ua-compatible: IE=11 としても動作する。

あ。

ここで、やっと互換表示設定の存在を思い出し、あけてみたら localhost が居座っていたという。

『災難の記録』




posted by at 2015-09-26 20:56 | IE | このブログの読者になる | 更新情報をチェックする

2015年07月06日

どうも、IE で右クリックからブックマークレットを登録しようとするとエラーになる事があるようです

イラストAC のブックマークレット作って IE でテストしたら、こんな感じで出ます。



どうも原因が今イチ特定できませんが、『お気に入りバー』へ直接ドロップすると問題ありません。

▼ こういうのは出ますが



※というか、もういい加減に『お気に入りバー』って呼ぶのやめろよ……


関連する記事

イラストAC用、複数タグ一括転送ブックマークレット


posted by at 2015-07-06 19:56 | IE | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します