質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

305閲覧

exeにパッケージした時、上階層のファイルを読み取るには?

kihokutarou

総合スコア59

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/10/03 01:23

ある制限のある環境下で以下の制作をしています。ほかの言語だと楽だとは思うのですが・・・。
・Htmlでjavascriptを使用しながらファイルを作成
→同じ階層のcsvファイルからランダムにセルを表示させるスクリプト
・nwjs(node-webkit)を利用し実行ファイル形式にパッケージング
・Enigmaで単体実行ファイルにまとめる (この場合1.exeと仮にします)

この際、主となるindex.htmlとsample.csvは同一階層に存在し、その場合上記手順を実行しても問題なく動きます。

やりたいこととしては、
・1.exeと同階層にsample.csvを置きユーザーが自由にcsvを編集して使えるようにしたい。
と思い、csvファイルをhtmlファイルの上階層に指定(../や../../など)にしてみましたが、パッケージにすると動きません。
※var data = csvToArray("../sample.csv"); など。
1階層上から5階層上まで試しましたが動きません。そもそもそういった手順では無理なのか・・・。

上記手順を踏んだ場合、exeにすると何階層上になるのか、どのような記述をすべきなのか、解決方法をご教示ください。または代替案があれば教えていただけるとありがたいです。

sample.csvはExcelでいうA列に1から順の連番、B列に表示させたい項目(この場合掛け算九九を入れてみました)が入っているものです。

html

1<!doctype html> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>フラッシュカード</title> 6<style type="text/css"> 7#aaaa{ 8 color:white; 9 text-align:center; 10 background-color:black; 11 font-size: 500px; 12} 13a.cp_btn { 14display: block; 15width: 160px; 16padding: 0.8em; 17text-align: center; 18text-decoration: none; 19color: #EC407A; 20border: 2px solid #EC407A; 21border-radius: 3px; 22transition: .4s; 23} 24a.cp_btn:hover { 25background: #EC407A; 26color: #fff; 27} 28</style> 29</head> 30<body> 31<a class="cp_btn" onclick="startfnc()">スタート</a><br> 32<div id="aaaa">問題</div><br> 33<a class="cp_btn" onclick="stopTimer()">ストップ</a> 34 35 36<script> 37 38//配列をシャッフルする 39function shuffle(array) { 40 var n = array.length, t, i; 41 42 while (n) { 43 i = Math.floor(Math.random() * n--); 44 t = array[n]; 45 array[n] = array[i]; 46 array[i] = t; 47 } 48 49 return array; 50} 51 52 53// CSVファイル読み込み 54function csvToArray(path) { 55 var csvData = new Array(); 56 var data = new XMLHttpRequest(); 57 data.open("GET", path, false); 58 data.send(null); 59 var LF = String.fromCharCode(10); 60 var lines = data.responseText.split(LF); 61 for (var i = 0; i < lines.length;++i) { 62 var cells = lines[i].split(","); 63 if( cells.length != 1 ) { 64 csvData.push(cells); 65 } 66 } 67 return csvData; 68} 69 70//csvからdivにランダムで書き出す 71function miru(){ 72 var data = csvToArray("sample.csv"); 73 shuffle(data); 74 var p = document.getElementById('aaaa'); 75 76 p.innerHTML = data[0][1] //テキストを変更 77 78 console.log(p.innerHTML); 79 80 //alert(data[0][0]); 81} 82function startfnc() 83{ 84 //関数hyoji()を1000ミリ秒間隔で呼び出す 85 setInterval("miru()",2000); 86} 87function stopTimer(){ 88 89location.reload(); 90 91} 92 93</script> 94 95 96</body> 97</html>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

NW.js使ってるんですよね?
動かしてるのはローカルですよね?
どうしてCSVファイルを通信して取ってこようとするんでしょうか?
別サーバに置いてある…わけじゃないですよね。

公式ドキュメントの以下を参照してください。
Example 3 - Using Node.js API

Node.jsのAPI使えるので、fsとか使ってローカルファイルアクセスすればいいだけでは?

Node.js - File System

投稿2018/10/03 05:17

編集2018/10/03 05:19
spookybird

総合スコア1803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

electronならファイルアクセス可能だと思います。調べて見て下さい。(vs codeとかの基盤です。)

ただelectronの内部環境はnode.jsなので今のソースの修正が必要かと思います。

投稿2018/10/03 03:22

oikashinoa

総合スコア2826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oikashinoa

2018/10/03 03:24

追記。 質問に書いてある 制限は明記したほうが良いです。必須ですね。 回答したあとで、いやそれは制限でダメですとか言われると回答付かなくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問