JavaScript の質問用スレッド vol.125

■ このスレッドは過去ログ倉庫に格納されています
2022/08/07(日) 15:57:40.26ID:TS5TGpUB0
!extend:checked:vvvvvv:1000:512
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-5のテンプレを読んだ上で質問してください。次スレは>>950>>2の「次スレの立て方」を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

■前スレ
JavaScript の質問用スレッド vol.124
https://mevius.5ch.net/test/read.cgi/tech/1636525464/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
2023/03/03(金) 23:30:24.99ID:Q9LzyMl00
だってフロントエンドエンジニアはhtmlもcssもわからないバカばっかりなんだもん
2023/03/04(土) 18:46:55.35ID:erCI1bTUH
javascriptコードでバグの伝搬を制限して拡張性を高める必要性のある堅牢なプログラムなんて不要だからでしょ
2023/03/04(土) 18:52:38.30ID:erCI1bTUH
みんななんで仲良くなれないかな
2023/03/05(日) 16:50:40.53ID:RB9OOifa0
仕事だし自分の領域に少なからず関わってくるんだから覚えろよ
わからないじゃねーんだよボケ^^
これでよし
2023/03/11(土) 23:19:16.39ID:qvilA0zq0
sortメソッドは必ず、比較関数と一緒に使用する必要ありますか?
sortメソッドは数値を並びかえだと比較関数と一緒でないとうまくいかなくて、
でも、文字列のソートなら、ソート関数なくてもうまくいくみたい。
sortは文字列でも数値でもソート関数使った方がいいのでしょうか?
2023/03/12(日) 04:39:15.28ID:PQcYNrkb0
>>686
疑問に思うことがあれば、まずMDNで関数の仕様を確認してみるといい
sort 関数なら、解説に関数を指定しなかった場合についてもちゃんと書いてある

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

> compareFn が与えられなかった場合、undefined 以外のすべての配列要素は文字列に変換され、文字列が UTF-16 コード単位順でソートされます。例えば、"banana" は "cherry" の前に来ます。数値のソートでは、9 が 80 の前に来ますが、数値は文字列に変換されるため、Unicode 順で "80" が "9" の前に来ます。undefined の要素はすべて、配列の末尾に並べられます。
2023/03/12(日) 09:33:44.40ID:do9jOqKh0
>>687
ありがとうございます。
689デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
垢版 |
2023/03/12(日) 10:07:09.74ID:mPShShEs0
ティラノスクリプトでゲーム作ろうとしたら、結局JSまで触らないと無理そうで及び腰・・・
・例えば変数aに"gazou1"という文字列を入れる
・『【"変数a"+.jpg】を表示』みたいな記述?? ←ここが分からない
・結果、gazou1.jpgが表示される
こんな感じの、変数に入れた文字列を使用して画像表示ってできますか?
JS 変数 画像表示 とかで調べても情報が多すぎてさっぱり分からない
2023/03/12(日) 11:40:49.62ID:SvUIzONJr
>>689
専用の掲示板へどうぞ
https://tyrano.jp/home/bbs
2023/03/12(日) 12:27:02.18ID:mPShShEs0
>>690
誘導ありがとうございます
ティラノだけでは無理そう&ティラノ上ではJSの記述が使える、という事でこちらで質問しました
なのでJSで可能か不可能かだけでも教えて頂けると助かります
JSで不可能なら調べたところで出て来ないでしょうから延々調べ続けるはめに・・・
2023/03/12(日) 12:49:02.36ID:PwnTbWEur
>>691
まずはティラノスクリプトに詳しい人に聞いてみるのが筋ではないですか?
同じ問題に遭遇した人もきっといるはずでノウハウも蓄積されてると思いますよ
wikiなんかもあるようですし、そちらも確認してみましたか?
2023/03/13(月) 10:07:27.43ID:/ROF2oq40
>>689
こういうこと?
===============================
<body>
<a href='#' onclick='fun'>link</a>
</body>

<script>
function fun(){a.href='https://....'}
</script>
===============================

===============================
<body>
<a href='#' id='href'>link</a>
</body>

<script>
href.onclick=function(){a.href='https;//...'}
---------------------
// または
let aLink=document.querySelector('[a]');
aLink.addEventListener('click',()=>{a.href='https://...'}):
</script>
================================
2023/03/13(月) 17:49:23.15ID:dqLl9/D/M
>>681
むしろjQueryの方が難しいと思うけど...
2023/03/13(月) 19:09:00.85ID:LN5ju60U0
>>693
表示する画像を変数を使って切り替えたいので、
if 変数a=='花' なら 花.jpg を表示 else 変数a=='山' なら 山.jpg を表示
みたいな感じで一応は表示できるのですが、表示したい箇所が複数あるので
if 変数b=='花' とか if変数c==’’花' とかで凄く長くなりそうなのです
でももし 変数の中身+.jpg みたいな記述がjsに存在するなら
aの場所には 変数aの中身+.jpgを表示 bの場所には変数bの中身+.jpg みたいに凄く簡略化できるかなって

教えて頂いたコードを調べてみます!ありがとうございます!
2023/03/13(月) 19:18:34.65ID:z8Hv0b/wr
>>695
他板にティラノスクリプトスレがあったんで
専用掲示板より5chがいいのであれば続きはそちらでどうぞ
https://mevius.5ch.net/test/read.cgi/gamedev/1428724538/
2023/03/13(月) 19:42:26.91ID:LN5ju60U0
>>696
そこは質問スレじゃないのでどうにも質問しづらくて
とうかJSの質問スレでJSの質問してるのに「ティラノ上で動かしてる」ってだけで、
そこまで「よそいけ、よそいけ」って言わなくても・・・
2023/03/13(月) 20:03:21.60ID:z8Hv0b/wr
>>697
>そこは質問スレじゃないのでどうにも質問しづらくて
そのスレを「質問」で検索してみると皆質問してるのが分かります
気後れする必要はないと思いますよ

>とうかJSの質問スレでJSの質問してるのに>「ティラノ上で動かしてる」ってだけで、
>そこまで「よそいけ、よそいけ」って言わなくても・・・
あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
それについてはこのスレよりティラノスレや専用掲示板の方が的確なアドバイスが得られるはずです
違いますか?
2023/03/13(月) 20:12:22.98ID:z8Hv0b/wr
ついでに「ティラノ上で動かしてる」JSについてもそちらで聞いた方が良いでしょう
ティラノスレを見渡すとJSのコードもたくさん貼ってありますよ
700デフォルトの名無しさん (ワッチョイ 6701-QDb6 [60.116.224.81])
垢版 |
2023/03/13(月) 20:21:27.02ID:LN5ju60U0
>>698
>あなたが必要としてるのは「ティラノスクリプトで変数を使って画像表示したい場合にどうすればいいか」の解決策だからです
違います。自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
最初にティラノの名を出したことで誤解を招いたかも知れませんが、
>>689に >JS 変数 画像表示 とかで調べても
>>691に >なのでJSで可能か不可能かだけでも教えて頂けると助かります
と書いてあるように、ティラノではなく、あくまでJSについて尋ねています
2023/03/13(月) 20:45:42.74ID:z8Hv0b/wr
>>700
>自分の質問を要約すると「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」です
では聞きますが、それが何のために必要なのですか?
2023/03/13(月) 20:57:54.94ID:ayGBKgIT0
拡張子を付加する機能は無いよ
WBC始まってキャッチボールしたい気持ちはわからんでもないけども
2023/03/13(月) 20:58:10.41ID:bqu+B+fY0
>>700
> 「JSには、変数の中身の文字列に.jpgなどの拡張子を付け足して画像を表示する機能はありますか?」

はい。可能です
imgタグにデータURLを引き渡し表示することはごく普通に見ることができます
Base64エンコードされた文字列とmediatypeをセットするだけです
2023/03/13(月) 20:59:33.75ID:1Iq9NysVM
>>700
あなたの質問はjavascriptの質問ではありますがティラノスクリプトの仕様を知らないと答えられないものです
こちらはティラノスクリプトの仕様を知らないのであなたの代わりに調べることから始めなければなりません
ティラノスレであれば詳しい人がいると思うのでそちらへどうぞ
2023/03/13(月) 21:59:41.61ID:LN5ju60U0
>>701
上述の通りゲーム作成と作業の簡略化のためです
>>702
拡張子の付け足しは誤解を招く表現でした。変数の中にある文字列と同じ名前の画像を表示するってことです
>>703
ありがとうございます。調べてみます
>>704
あくまでJSの事として聞いているので「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」って感じの答えで十分です
ティラノスレでJSのこと聞くよりJSスレでJSのこと聞く方が早そう、って考えはそこまで変ですか?
2023/03/13(月) 22:18:31.29ID:z8Hv0b/wr
>>705
>上述の通りゲーム作成と作業の簡略化のためです
それは「ティラノスクリプトで変数に応じた画像表示する」こととは違うのですか?

>「JSではこれこれこうやる。それがティラノ上で動くかは知らんけど」
このスレでそんな回答をもらうよりはティラノスレで質問して
「ティラノスクリプトではみんなこうやってるよ」って回答をもらう方が何倍も早くて確実だと思いますがいかがでしょう
2023/03/14(火) 01:06:18.93ID:VmfXTFqwa
例えば、jQuery で、

<img id="photo_1" src="a.png">
を、以下に変更するなら
<img id="photo_1" src="image_1.jpg">

// :first は、最初に見つかったもの
$( '#photo_1:first' ).each( function ( index, elem ) {

const image_1_basename = "image_1"
const image_1_filename = image_1_basename + ".jpg"

$(this).attr('src', image_1_filename) // 設定
} )
2023/03/14(火) 02:37:35.49ID:JIhs77SCM
JSスレでJSのこと聞きたいんならティラノの名前出すなよ
2023/03/14(火) 08:16:42.83ID:gMQMDZBfd
それはそう
2023/03/14(火) 13:16:01.19ID:bBCbUtGh0
jpegの名前を動的に指定できるよ
2023/03/14(火) 13:21:05.82ID:crjDIavXr
>>705
ティラノについて少し調べたのでスレ違いを承知の上で書きます
あなたが>>689>>695でやりたいことは
[bg storage="&f.bg + '.jpg'" time=1000]
というような書き方で実現できるかと思います

簡単に説明します
まず「&f.bg」の「&」はエンティティと呼ばれるもので変数の値をタグのパラメータとして渡すときに使用します
https://tyrano.jp/usage/tech/hensuu
の最後に説明があります

そして、storageパラメータに渡す際に「 + '.jpg'」で拡張子を連結しています。これは
https://tyrano.jp/sample2/code/kiso/19#demo
のkaisetsu/19_variable_1.ksの415行目~に変数に対して数値演算をした値を
パラメータに渡す例がありました。文字列の連結も同様に可能です

これによって、変数f.bgの値が「花」ならば「花.jpg」が、「山」ならば「山.jpg」が表示されます
例は背景ですがキャラやその他の画像でも可能だと思います
2023/03/14(火) 13:30:55.51ID:crjDIavXr
>>705
なお、簡単なサンプルで動作確認をしました
https://tyrano.jp/usage/tutorial/moji
上記チュートリアルに従って新規プロジェクトを作成し、
first.ksの内容を以下のように書き換えて実行してみてください

*start
[wait time=100]

背景を変更します。[r]
[link target=*select_room]<教室>[endlink][r]
[link target=*select_rouka]<廊下>[endlink][r]
[s]

*select_room
[eval exp="f.bg='room'"]
[jump target=end_select]

*select_rouka
[eval exp="f.bg='rouka'"]
[jump target=end_select]

*end_select
[cm]
[bg storage="&f.bg + '.jpg'" time=1000]
[jump target=start]
2023/03/14(火) 20:28:58.71ID:2HNLo12V0
>>711
ありがとうございます!!できました!!
2023/03/14(火) 20:53:16.27ID:2HNLo12V0
作業が一気に楽になりました!
>>711も他の方も本当にありがとうございました!
そして不可能と思いこんでたことが実は可能だったあたりはすみませんでした!
2023/03/14(火) 20:53:28.39ID:GiZ8CeD1r
>>713
解決したのならなによりです

が、今回無駄に遠回りをしてしまったのは自覚、反省しましょう
あなたはこの問題の解決はティラノ単体では無理だと決めつけてしまったためにこのスレで質問しましたが
その判断は正しくありませんでした

繰り返しになりますが、この先また何か躓いたときはまずティラノの掲示板なりスレなりで聞いてみるようにしましょう(たとえJSに関することであれ)
その方が解決が早く、的確なはずです
2023/03/14(火) 21:02:42.69ID:GiZ8CeD1r
>>714
ちょうどかぶってしまいましたが、ちゃんと自分の非を認められる人で安心しました

こちらも少し言葉がキツくなってしまった点はお詫びします
2023/03/15(水) 01:17:49.11ID:sTLgg4Iop
初めまして

Pixiv filter(GitHubで公開、リンクはスパム対策で貼れず)という拡張機能がありまして、それに似たものを自作したいと思い立ち、色々調べてみました

別スレにて、検索画面上での作品ごとのタグは、画面には表示されないもののデータとしては生成されている、という事を伺ったのですが、
どこに生成されているのか、どうやったら参照できるのかなどが分からず、苦戦しております。

ご教授頂ければ幸いです
2023/03/15(水) 02:28:06.62ID:i4bxOxoza
これか?

github.com/kazu-ux/PixivFilter

React, TypeScript
2023/03/15(水) 07:58:24.49ID:q+AMrJS6H
反省なんて必要ないわ、なんか強迫症的なやつがうざい
なんなんだ、執着が過ぎる
2023/03/15(水) 08:01:02.20ID:q+AMrJS6H
プログラムではすべてのタグを検出して配列等に格納しているが
そこから抽出して出力する処理をしてるってことじゃない?
見てないからわからんけど
2023/03/15(水) 09:37:50.61ID:OLitJJv/d
>>717
なんか見覚えあると思ったらこれか
https://mevius.5ch.net/test/read.cgi/hp/1439005423/342
343をレスしたの俺だけど回答の内容を理解できなかったってこと?
分からないところがあったのなら追加で質問すればよかったろうに
それをせずに全然違うスレで聞き直してるのはなんで?
2023/03/15(水) 20:45:42.17ID:q+AMrJS6H
Pixiv filterが何なのかわからないし確認もしてないけど、

例えば複数の作品毎にTagオブジェクトがあったとして、
Tagのプロパティに表示させるか表示させないかを判定するプロパティがあり
そのプロパティ名がshowAbleで、表示を許可するのは、showAble:true
許可しない場合には、showAble:false
とされていたとすれば

まず最初にすべての作品Tagオブジェクトが格納されている配列を取得し(もしくは配列に取得する関数を作り)
(let tagArr=[tag1,tag2,tag3,tag4....];)

その配列から、tag.showAble=trueであるオブジェクトを取得して別の配列(showAblerArray)に格納し
(let showAbleArray=[] ; for(let t of tagArr){ (if(t.showAble==true){showAbleArray.push(t)

showAbleArrayの全要素に対して、表示させる処理をする
(for(let s of showAbleArray){,,,,,,どこに表示させるか......})

っていう感じでどうですか?
2023/03/15(水) 22:44:21.64ID:ohrI2qnX0
jQueryはなぜ嫌われる?
簡単な構文で便利だと思うが…。
他のライブラリ・フレームワークとの互換性が高ければいいのに。
2023/03/15(水) 23:48:50.56ID:T0OxazTtM
技術的には好かれてるわけでも嫌われてるわけでもない
スレ的には脈絡なく蒸し返す厄介な奴がいるので敬遠される
2023/03/16(木) 07:03:01.34ID:Hd88hZaKH
嫌われてはないんだろうけどスレチなんでない?
2023/03/16(木) 07:15:13.56ID:Hd88hZaKH
javascriptで作られたプログラムの処理に関して
Jqyeryを使えば簡単だよって言われても
いやいやここはjSで書きたいんでってなるでしょ
そういう質問に対してjqのほうが簡単っていうのがよくわからん

フレームワークの質問スレは
ベース言語のすれとは別に立てたほうが
2023/03/16(木) 09:02:04.98ID:c9lqR0yG0
www
2023/03/16(木) 10:39:46.62ID:fxj0X8UB0
フレームワークスレは一応立ってるね
糞スレだからそこで質問して回答があるのか知らんけど
2023/03/16(木) 11:25:08.38ID:QjQVIFFDr
>>719
これもしかして私に対して何か言おうとしてる?
もしそうならもう少し具体的に問題点を指摘してもらえないかな
2023/03/16(木) 15:46:42.93ID:FgyDZ6E70
いえいえ、違います、気にしないでください
2023/03/16(木) 20:33:58.52ID:ParHajkN0
>>730
あなたは>>719とワッチョイもIPも違うようだが…
2023/03/16(木) 20:55:51.48ID:Olf8APhOd
>>722
どうですか?も何もそんな都合のいい妄想データを元に書いたコードなんぞ
役に立たないどころか混乱させるだけだからやめようよ
2023/03/16(木) 21:11:03.92ID:Hd88hZaKH
混乱させるだけとかwww
そもそも解答者がわざわざ対象コードを検索して読み込み
そして質問者が満足するようなコードを生成するとか、自分は絶対しないw

質問者は
・何やら検索するらしい
・検索はタグで行うらしい
・タグで検索しても表示するものとしないものがあるらしい

その3点でアドバイスするのなら
・検索ワードでヒットする画像を抽出する
・ヒット判定は画像のタグプロパティで判定
・判定でヒットした画像を1枚もしくは複数枚表示する

とした場合で、初心者初学者向けにアドバイスするのなら
上記の感じのアドバイス以外に何かできるアドバイスあるん?
質問の質以上のアドバイスなんてできない
まずはオブジェクトとプロパティあたりから始めるしかないっしょ
って思ってのアドバイスなのねん
2023/03/16(木) 21:38:40.67ID:Olf8APhOd
質問者がわからないと言ってるものには具体的な対象があるわけよ
それを無視して一般的な考え方のアドバイスをするなら抽象的な話にとどめればよくて
わざわざデタラメコードを生成することはなかろ
2023/03/16(木) 22:01:47.84ID:Hd88hZaKH
それはそうですね
おっしゃる通り
でもデタラメとか言わんでください!
2023/03/17(金) 21:04:07.19ID:irjN28+Dd
他に適切な表現が見つからなかったからごめんな
2023/03/17(金) 21:08:34.06ID:ZP9+v2PL0
こっちがデタラメなコード書くと見かねていい感じのコード書いてくれるツンデレ
2023/03/18(土) 02:26:56.50ID:dC3/JFCa0
すみません、私の知識不足というか理解不足も大きそうですので、手が出るところからさせて頂こうと思います。

javascriptの「fetch」メソッドなのですが、これはjsonファイルを読み込む事はできないのでしょうか?ローカルで試しましたが、エラーになってしまうようです
2023/03/18(土) 05:10:03.75ID:s5wH/EpL0
>>738
fetchやXHRも >>467-473 と同様基本的にFileURIでのアクセス不可
2023/03/18(土) 15:36:03.94ID:dC3/JFCa0
ありがとうございます。「ローカルのサーバーを立てる」と良いらしいのですサーバーは専用のパソコンでないと、セキュリティ的にも危険と聞いた事もありますが、大丈夫なのでしょうか。また、実際やるとしたら、どのような方法があるでしょうか。
2023/03/18(土) 15:40:55.59ID:T8cp6VGg0
Xamppつかっておけばよろし
2023/03/18(土) 19:03:06.43ID:xpgWDt8BH
>>740
vscodeって使える?すごく簡単なエディタ
そのエディタでliveServerっていう拡張があるんだけど使えるか試してみたら?
2023/03/18(土) 21:30:20.18ID:HGxbjpaKd
Promise.race()で複数のPromiseを渡して、最初に終了したタスクのPromiseを受け取ったあと、同様に順次残りのタスクを完了したものから受け取るような書き方はできますか?
(最終的にすべての非同期タスクの終了まで繰り返す)

Pythonでいう、as_completedのように複数非同期タスクを、終了次第順次ループで受け取るような形です。
2023/03/19(日) 12:35:04.92ID:DxTl2kdL0
>>741 >>742
vscodeの方を使わせて頂きました。お二方ともアドバイス、ありがとうございました。

余談ですが、jsonファイルに単なる文字列(あああ、abc、123)などを単発で格納するとしても、「名前:値」のフォーマットは守らないといけないんでしょうか(名前をいちいち宣言しないとダメなのか)。
2023/03/19(日) 12:36:07.26ID:DxTl2kdL0
正確には「{"名前":値}」ですね。省略できれば楽だなと思ったのですが。
2023/03/19(日) 12:59:08.70ID:4pa7IAk9d
{"名前":値}はあくまでオブジェクトの形式であって文字列や数値のみを返したいなら不要
ただし文字列は"あああ"や"abc"とする必要はある
https://www.json.org/json-ja.html
2023/03/19(日) 13:08:00.26ID:DxTl2kdL0
ありがとうございます。おそらく

"abc", "あああ"

のようなカンマ区切りで大丈夫でしょうか。
2023/03/19(日) 13:20:25.80ID:S0dCUzy1d
単一の値でない場合は配列にすること
["abc", "あああ"]

有効なjson形式かどうかはJSON.parse()に食わせてみるといい
JSON.parse('"abc", "あああ"'); //NG
JSON.parse('["abc", "あああ"]'); //OK
2023/03/19(日) 14:04:53.34ID:DxTl2kdL0
>>748
参考になりました。ありがとうございます。
2023/03/19(日) 15:26:18.81ID:FTc6ajskM
>>743
各promise完了後に順次実行したい共通処理をmapしてthenでチェイン

Promise.all(promises.map(p=>p.then(log(“resolved”)))).then(log(“All finished”);

function log(message=“”) {
return (x) => {
console.log(`${message}: ${x}`);
return x;
}
}
751デフォルトの名無しさん (ワッチョイ d755-a1qf [220.97.196.212])
垢版 |
2023/03/19(日) 16:15:48.14ID:/GeuLHtL0
趣味でWebサイトを使うのにJSを勉強しだしてまだ3年目なのですが、
なぜか年明けから会社のDX担当にされました。
今社内システムがIE9向けにActiveXが使われているのですが、Edgeに移行するので動くように直してと言われています。
これまで自分なりにいろいろ調べてきて、とりあえずHTML/CSSなどの見た目の部分と、大したことをしていないJSの部分は移行できたのですが、
肝心のActiveXであれこれやっているところを直すことができません。
期限は3月末までで苦しんでいます。

例えばこのような箇所があります。
var connection = new ActiveXObject("ADODB.Connection")
var recordset = new ActiveXObject("ADODB.Recordset")
var connectionString = "Provider=sqloledb;Data Source=〜〜〜
var query = "〜〜〜
connection.Open(connectionString)
recordset.Open(query, connection)
while (!recordset.EOF) {
var encryptedData = recordset.Fields("data").value
var decryptedData = decryptData(encryptedData, decryptionKey)
〜〜〜
recordset.MoveNext()
}
これをEdgeで代替手段で実装しようと思ったら、どのようなコードになりますか?
ライブラリやフレームワークは使ってはいけないことになっていますが、バレなさそうなものなら中に組み込むつもりです。
どうかよろしくお願いします。
2023/03/19(日) 16:36:55.71ID:HI67bUFb0
代替手段なんてない
仕事振ったやつが何も分かってない

あれこれやってる内容をなにか別の技術で1から組み立てる必要あり
それかedgeのIEモードは検討出来ないの?
2023/03/19(日) 17:21:20.47ID:HTlOdPesM
今から実装してテストしてリリースしてその後の問い合わせ対応や運用に備えるのはスケジュール的に無理でしょ

3月末を死守する必要があるならIEモード1択
IEモードで時間稼ぎしてその間にサーバーサイドからDBアクセスする仕組みを作る

IEモードにするにしてもグループポリシーの変更・適用のテストや問い合わせ対応の準備を考えればそれでも時間が足りないくらい
2023/03/19(日) 18:07:07.17ID:EAkcZvWPd
>>751のコードにぶち当たった時点でEdgeというかブラウザ単体で実現できないことには気がついて欲しいものだが
仮にも2年はJSを勉強していたと言うなら
2023/03/19(日) 18:51:42.92ID:M92RK9ru0
JSONでダミー値をコメントのつもりで使ってたらエスケープできてない\でパースエラーになるデータができたりして使うのが怖くなった
やっぱコメントぐらいは定義必要だったなこれ
人間が手書きするものじゃないとしてもよく普及したもんだ
2023/03/19(日) 18:56:28.01ID:M92RK9ru0
>>751
そういうのってEdgeのIEモードに移行して終わりでしょ
周囲も期間的にその程度しか期待してないと思うけど
2023/03/19(日) 19:09:54.29ID:M92RK9ru0
ど素人だとIEモードが何なのかで3月は潰れるかもしれんけど一応
基本的には社内のADサーバでGPO管理してる奴にEdgeのIEモードのサイトリストに追加してもらう
これは君の担当以外にもIEモードのサイトは糞の山程あって既知の対応だからおそらく追加を依頼するだけでいいはず
うまくすればそれだけで作業が終わる可能性もある
2023/03/19(日) 19:35:09.37ID:vtMigryt0
>>755
コメントの書式があったって書式から逸脱する文字列を入れてパースエラー出す未来しか見えんわ。
2023/03/19(日) 19:46:06.22ID:GXvqERSA0
たぶんIEを前提とした目の前にあるコードを読み解いて作り直すより設計書用意したほうが早い

あるいはAIと二人三脚
760751 (ワッチョイ d755-a1qf [220.97.196.212])
垢版 |
2023/03/19(日) 19:54:47.83ID:/GeuLHtL0
みなさまありがとうございます
IEモードは1,2度調べて、いつまでこのモードがあるか分からないからと止めたのですが、
やはり時間稼ぎも考えるとこれしかなさそうです。
その間に根本的な解決策を探したいと思います。

なぜか年明けから会社のDX担当にされました。
と言いましたが、実はそれは嘘です。
年末にかけて社員が半分以上辞めて、残った人の中で一番詳しそうだったのが僕だったのです。
実は、サーバーサイドをいじらないといけないのだということは、薄々気づいていました。
でも、今動き続けているサーバーを触れる人が誰もいないのです。
僕も、SQLというものがある、という程度の知識しかないので、触る気にもなりません。

とりあえず夏のボーナスまで引っ張って、無理そうだったら自分も転職します。
今動いているものをうっかり壊したら、止められなくなりそうなので慎重にがんばります。
ありがとうございました。
2023/03/19(日) 19:55:19.68ID:xryn/wmcd
>>755
怖いも何もパーサーがきっちり仕事してる証拠じゃないの?
コメントを書きたいって需要に対してはJSON5やJSONCって派生規格があるから
それらを検討するべき
2023/03/19(日) 20:23:01.76ID:M92RK9ru0
何が理由かは置いといて技術を含めた社員がごっそり半数も辞めてる状況だとその会社から賞与もまともには出ないだろう
Edgeへの移行時期としてもかなり遅れてるし有給消化しつつ転職活動に専念した方がいいね
2023/03/19(日) 20:33:33.23ID:M92RK9ru0
>>761
規格はあれど既存の環境に適用できるものではないのがな
JSONとして扱う前にJSONCとしてコメント抜く前処理でも通すか
2023/03/19(日) 22:37:02.99ID:SC8SOdGAd
>>763
パーサーにケチつけてるよりはその方が建設的でしょうよ
2023/03/20(月) 03:23:46.29ID:iV2jn8x9a
>>738
VSCode の拡張機能では、

open in browser では、ローカルファイルアクセスになる。
この場合、CORS など、ブラウザの色々な制限がある

file:///C:/Users/Owner/Documents/test/index.html

一方、Live Server では、
自分のPC 内にサーバーを立ててから、そこから配信されるので、テストしやすい

http://127.0.0.1:5500/test/index.html

>>751
そういうのは、Excel, VBA, Access とかじゃないの?
ベンチャー企業やプロのバックエンドは、Ruby on Rails だけど
2023/03/20(月) 04:02:42.23ID:iV2jn8x9a
>>743
Promise.all/allSettled とか?
2023/03/20(月) 19:47:12.99ID:PTBUy+ct0
chromeの拡張機能で、「ngWord.json」内のデータを「background.js」経由で「content_script.js」に格納しようとしていたのですが、上手くいきません。コードでおかしな点等あれば、ご教授頂けないでしょうか。

【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
// content_script.jsにデータを送信
chrome.runtime.sendMessage({ngWords: data});
});

【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords); // 受信したデータを表示
}
});
2023/03/20(月) 19:56:51.89ID:hUotJVz90
>>767
バックグラウンドからタブに送信するならchrome.tabs.sendMessageじゃないかな?
2023/03/20(月) 20:37:35.10ID:PTBUy+ct0
>>768
「タブ」というのは、「content_script.js」のことでしょうか?
だとすると「chrome.tabs.sendMessage(tabId: content_script.js, ngWords: data)のように書く感じでしょうか。
2023/03/20(月) 20:53:08.72ID:mlA7fjwPM
雑な方法としてはアクティブなタブに送ればいいんちゃう?
2023/03/20(月) 21:36:27.87ID:hUotJVz90
>>769
そうです。background から content_script に送信する場合はchrome.tabs.sndMessage だったと思いますよ
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sndMessage(tabs[0].id,{
ngWordsg:data
})
}})
というような感じで
2023/03/20(月) 21:40:33.20ID:xjtq7KFo0
最初にコンテンツスクリプト側から何かメッセージ送れば
バックグラウンド側のchrome.runtime.onmessage.addListenerのsender.tab.idでタブID取れるっしょ
2023/03/20(月) 21:49:32.93ID:hUotJVz90
それならtab.id必要なくてsendResponseで返せるんじゃないかな?
2023/03/20(月) 21:53:15.40ID:PTBUy+ct0
【background.js】
fetch('ngWord.json')
.then(response => response.json())
.then(data => {
chrome.tabs.query({active:true,(tabs)=>{
chrome.tabs.sendMessage(tabs[0].id,{ngWords:data})
});
};

【content_script.js】
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
if (message.ngWords) {
const ngWords = message.ngWords;
console.log(ngWords);
}
});

このように修正しましたが、上手く取得できないようです。
2023/03/20(月) 22:00:26.17ID:hUotJVz90
そもそもngWord.jsonの中身とれてますか?ローカルファイルならweb_accessible_resources書いてchrome.extension.getURLで取るんじゃないでしょうか?
2023/03/20(月) 22:04:38.80ID:xjtq7KFo0
もしかしてスクリプト本当にそれだけなの?
だとしたらcontent_script.js実行される前にbackground.js終わってそう
2023/03/20(月) 22:24:56.04ID:PTBUy+ct0
申し訳ありません、私の知識不足で、よく分かりません。もう一度格闘して、改めて質問させて頂きます。ご教授下さり、ありがとうございます。
2023/03/20(月) 23:58:23.18ID:hUotJVz90
>>777
めっちゃ適当なこと言ってましたわ
web_accessible_resourcesとchrome.extention.getURLは関係ないっぽいです

まずcontent_scriptが実行されるタイミングでbackgroundからタブにデータを送れるはずなくて
かといってcontent _scriptからメッセージ送ってbackgroundでfetchしたデータを送ろうとしてもセキュリティー的になのか送れない

なのでbackgroundでfetchしたjsonをchrome.storage.local.setで保存してcontent _scriptからchrome.storage.local.getで読み込むが正解っぽいです

暇だったんで...
2023/03/21(火) 04:01:46.37ID:rEPYZ+tza
漏れはプロジェクトを作って、index.ts に、TypeScript で以下を書いて、
npm/yarn, webpack, babel でビルドすれば、
import で、JSON ファイルやLodash も読み込めるけど

import WordData from "./word_data_tmp.json";
console.log( WordData.length )

const ary = [ ...Array( 5 ).keys( ) ]
// => [0, 1, ....,4]

import shuffle from 'lodash.shuffle';

console.log( shuffle( ary ) );
// => シャッフルされる
2023/03/25(土) 14:02:02.15ID:MQIuadNDM
Next.jsでAPI Routesを使わないのは一般的でしょうか?
2023/03/25(土) 18:19:14.13ID:1/y/Yy4J0
「一般的」のような主観的なものてはなく、客観的な定義が必要なのでは
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況