1 名前:デフォルトの名無しさん mailto:sage [2022/08/07(日) 15:57:40.26 ID:TS5TGpUB0.net] !extend:checked:vvvvvv:1000:512 JavaScript を自ら学ぶ人のための質問スレッドです。 >>2-5 のテンプレを読んだ上で質問してください。次スレは>>950 が>>2 の「次スレの立て方」を元に立ててください ■質問を書く上で (1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。 (2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。 (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など) (3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。 (4) 常に自発的に調べる心構えを持ってください。 具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。 わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。 (5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。 (6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。 ※必ず「問題の事象が再現されること」を確認してください。 必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。 (7) サンプルコードに HTML が含まれる場合は 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
98 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 17:53:11.47 ID:hlHjM9NA0.net] こんにちは ブラウザから、ローカルのファイル(画像など)を「関連付けされたソフトで開く」というのはできますか? HTMLの<a href=#></a>だと、ブラウザ(Chrome)内で開いてしまいますが、これを別の画像ビューアで開きたいです
99 名前:デフォルトの名無しさん mailto:sage [2022/09/25(日) 20:26:11.45 ID:oCqDdJBP0.net] >>96 参考情報 https://akaki.io/2021/url_scheme_hijack
100 名前:デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]]) mailto:sage [[ここ壊れてます] .net] ありがとうございます 「カスタムURLスキーム」を調べてやったみましたが、ローカルのファイルを指定ができません(画像ビューアは開くがファイルが開かない) JavaScriptの質問ではないので恐縮ですが、どうやって指定できますかね? https://qiita.com/kojimadev/items/74100c8557a92939ef69 例えば上のサイトを参考に、画像ビューアをhogeでレジストリ登録して下のようにすると、画像ビューアだけ起動してファイルは見つからなかったと出ます(hoge:file:///C:...などもダメ) <a href="hoge:C:/tmp/sample.jpg"></a>
101 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 22:44:18.29 ID:Xyg4q6vF0.net] >>98 違ってるかもだけど、Windowsだったらパスの区切り文字は/じゃなくて\または¥じゃないのかな で、\は制御文字として扱われるからエスケープして\\にしないとダメとか
102 名前:デフォルトの名無しさん mailto:sage [2022/09/26(月) 23:02:16.56 ID:adbpU9F00.net] >>98 アプリの方もURLスキームでの起動に対応してないとだめなんじゃない? URLスキームはその URLの書式をアプリ独自に決めてあって、アプリはその書式でアクションや対象を判別して動作するように作られてるんだと思う。 とりあえず与えられた引数が分かるテストアプリを見繕って hoge として登録してみたら何か分かるかもよ。
103 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 16:54:22.37 ID:bvSP9gLaH.net] Xhrで非同期通信するサーバーサイドのファイル(api.php)の中に登録されてる関数を実行することって出来るかな? api.phpのfunction hoge()を実行するって感じ
104 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 17:40:38.15 ID:mWLza3X30.net] >>101 リクエストのハンドラがその関数を呼べばいいだけじゃない?
105 名前:デフォルトの名無しさん mailto:sage [2022/10/06(木) 18:17:20.20 ID:tI414gt60.net] >>101 ん? フレームワークも何も使ってないならそもそも該当のphpファイルを指定するから その中で実行したい事を書けば良いだけでは?
106 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 06:40:09.61 ID:+dFS1Lme0.net] if (a==b){} と書くべき所を、 間違って if (a=b){} と書いたら、 a<>b な値を入れても true が返ってくる 何が起きているんでしょう?
107 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 06:51:04.23 ID:PuLzlRQU0.net] >>104 a=bの評価値はb bがtruthyならifの次の文が実行される
108 名前:デフォルトの名無しさん mailto:sage [2022/10/19(水) 11:19:00.04 ID:4XenNUmUa.net] bが0以外なら{}が実行される。
109 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 01:45:20.86 ID:sarICcZm0.net] >>105 >>106 それじゃifにする意味がない状態だったんですね ありがとうございました
110 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 05:56:13.16 ID:BavO7XJlH.net] uBlockで要素取得した時の名前が###contentsです これをTampermonkeyのJSで要素getするにはどうしたらいいでしょうか? getElementById、getElementsByTagName、getElementsByClassName、querySelectorAll等ではだめでした
111 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 12:03:03.14 ID:qg4xQu9m0.net] >>107 条件の中にあえて代入を入れるケースは無くはない。 if (result = func()) ... みたいな感じとか。 これは比較してるんじゃなくこういうこと。 result = func(); if (result) ... 比較と組み合わせて if ((result = func()) == 100) ... みたいな書き方もある。 メリットは単に短く書けるということもあるし、別の言語も含めれば while ((line = fgets(fp)) != EOF) ... みたいな、代入と比較が一緒じゃないと書き方的に面倒になる部分に使う。
112 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 12:59:50.47 ID:QXtRAkax0.net] >>108 getElementById('contents') or querySelector('#contents')
113 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 13:20:03.60 ID:C0rWwrYjH.net] >>110 なるほど、#つけたらいけました ありがとうございました
114 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 15:12:09.85 ID:MJUQgOR60.net] >>106 0だけがfalsyなわけではないはず https://262.ecma-international.org/13.0/#sec-toboolean >>109 代入と組み合わせることですっきり書ける場合があるよな whileは割と使ってる
115 名前:デフォルトの名無しさん mailto:sage [2022/10/20(木) 21:55:34.73 ID:1vPPjI2Y0.net] whileって原始的かつ結構直感的だから使いやすいよね
116 名前:デフォルトの名無しさん [2022/10/23(日) 10:06:21.98 ID:6Nh0kUN40.net] <style id="test"> @media screen and (min-width:751px){ #aaa{ width:700px; } } @media screen and (max-width:750px){ #aaa{ width:100%; } } </style> <スクリプト> let sheet = document.getElementById("test").sheet; let st = sheet.cssRules[0].selectorText; alert(st); </スクリプト> このようなmedia screen付きのcssのselectorTextを取得したいんだけど このようにやってもundefinedになってしまいます。どうすれば取得できますか? media screenがなければちゃんとselectorTextは#aaaと取得できるんだけど
117 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 11:43:18.26 ID:hW6qdPXA0.net] console.dirでsheetの中身を覗いて探せば見つかるかと
118 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:29:44.52 ID:l4Ll+vUb0.net] iPhone6などの古い環境のSafariで、ES6以降の各ES(ES2022等)のどこまでサポートしているか、というのはどのように確認すればよいでしょうか? iOSは12で、UAではSafari Webkit 604.1 となっています。 ESも毎年更新されてPCや現行スマホなら問題なく表示できますが、サポートの終わった古い端末でも表示させるにはどの機能がNGかを確認したいのですが・・・ iOSバージョンやブラウザバージョンを指定して、それがどこまでサポートしているかが分かるサイトや、実際の端末を使ってどの機能がNGかテストするとか、PC上でデバッグ可能(エラー表示)なエミュレータなどあれば教えていただきたいです。
119 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:34:31.24 ID:sfEqSuvv0.net] MacBookを買いましょう
120 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:44:23.51 ID:YzYXhWAT0.net] Can I use のサイトとか、npm のbrowserslist とか?
121 名前:デフォルトの名無しさん mailto:sage [2022/10/23(日) 16:55:32.04 ID:l4Ll+vUb0.net] >>118 ありがとうございます。 Can I useのサイトで各ESxxxを検索して概ねサポートされる範囲が分かりました。 Safari 12だとES2020の一部からサポートされない機能があるので、そこら辺が境界ぽいことが分かりました。
122 名前:デフォルトの名無しさん [2022/10/23(日) 17:46:05.51 ID:6Nh0kUN40.net] >>115 cssRules[0].cssRules[0].seletctorTextとすることでできました ありがとうございます
123 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 22:47:10.94 ID:VafCOtMO0.net] JavaScriptは大変難しい言語です。Rubyの難易度を2、Cの難易度を5、C++の難易度を8にすると、 JavaScriptの難易度は12ぐらいあると思います。 このコーディングガイドはそんなJavaScriptの深みに嵌まらないようにするためのJavaScriptの書き方を規定したものです。 初級者1のための物ですので、わかってやっている人に好きにやってく
124 名前:ださい。 このコーディングガイドは絶対に従わなければならないものではありません。 私は一切強制はしませんし、初級者が従わなければならないという義務もありません。採用するしないはみなさんの自由です。 禁止編 JavaScriptには安易に使用してはいけない機能があります。 下記の機能は、それぞれの機能を使っても良い、または、使うべきであるという理由を説明できない限り、使用してはいけません。 [] [ここ壊れてます]
125 名前:デフォルトの名無しさん mailto:sage [2022/10/24(月) 23:16:49.94 ID:Sn3QmQ+W0.net] >>121 中途半端に@raccyの記事をコピペした意図は何? https://qiita.com/raccy/items/bf590d3c10c3f1a2846b
126 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:00:55.86 ID:IMqCQD810.net] ラッシーこそだよ。欄版は。
127 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:02:07.20 ID:IMqCQD810.net] マンタリーな、シェシェ。 ぐーむ菜素図。i-ku
128 名前:デフォルトの名無しさん (ワッチョイ 2bdb-72Rk [217.178.96.73]) mailto:sage [2022/10/25(火) 01:02:49.43 ID:IMqCQD810.net] 天ら万重も近し。
129 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 02:28:40.06 ID:iqiTxlhy0.net] >>123-125 日本語でOK
130 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 14:16:06.20 ID:S5n6e8jb0.net] ファイルを読み込んでArrayBufferから配列へbyteデータにしたいです。 <input type="file" id="file"> <script> let fileInput = document.getElementById('file'); fileInput.onchange = () => { var fileReader = new FileReader(); fileReader.onload = function(e) { var ary = new Uint8Array(fileReader.result); } }; これでaryに数値が代入されているんですが 選んだファイルが約100,000kb程のサイズなんですが 処理後のaryのサイズが約1600,000kbとなってしまいます。 なぜ大きくなってしまうのでしょうか? 同じサイズになるようにするにはどこを訂正するといいですか?
131 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 15:28:48.49 ID:S5n6e8jb0.net] すいません勘違いだったようです。
132 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:11:46.89 ID:jIOTtTPX0.net] 初心者です、関数を配列オブジェクトに入れて findでオブジェクトを取得して、そのオブジェクトの中の関数を呼び出すといったことがしたいです 初心者むけのネット記事なんかを見て組んだのですが、エラーが出てしましいます。 今のソースはこんな状態なんですが、間違っているところはありますでしょうか? struct = [ {hoge:huga, func:functionA}, {hoge:hage, func:functionB} ] callfunction(check){ var gets = struct.find((v) => v.hoge === check); gets.run()←ここでAとBを使い分けて呼びたい }; functionA = {} functioA.run = function(){ ~動かしたい処理A~ } functionB = {} functioB.run = function(){ ~動かしたい処理B~ }
133 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:13:23.18 ID:jIOTtTPX0.net] すみません少し修正です struct = [ {hoge:huga, func:functionA}, {hoge:hage, func:functionB} ] callfunction(check){ var gets = struct.find((v) => v.hoge === check).func; gets.run()←ここでAとBを使い分けて呼びたい }; functionA = {} functionA.run = function(){ ~動かしたい処理A~ } functionB = {} functionB.run = function(){ ~動かしたい処理B~ }
134 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 17:47:25.32 ID:dHKYynBEd.net] あまり複雑なことはせずに↓みたいなのではダメだろうか https://jsfiddle.net/6x7yusjL/ これではダメで、どうしても>>130 のエラーを解消したいなら出ているエラーの内容ぐらいは書くようにしよう
135 名前:デフォルトの名無しさん [2022/10/25(火) 17:58:30.53 ID:IMqCQD810.net] >>121 14位.JavaScript 難易度:★★☆☆☆ 今回ご紹介するプログラミング言語の中で最も難易度が低いのがJavaScriptです。 初学者がプログラミングの学習を始めるのに適した言語の一つ。 Webサイトなどで動きのある見た目を実現する為に利用されます。 JavaScriptから派生したフレームワークも数多く、 そちらのフレームワークを学習する場合には難易度が高くなります。 ただ、JavaScriptをそのまま利用して学習を進めるであれば、 他の言語と比べて開発環境の構築が不要であることや関連書籍が数多くでていることから、 難易度は低い言語といえるでしょう。
136 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 18:17:09.25 ID:jFHnOV8wa.net] >>131 ありがとうございます。 まず進捗させないとけないんでそのやり方でやってみて、後々何がエラーの原因なのかは自決できるように調べてみます。
137 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 23:20:22.24 ID:RDzJGkEc0.net] JavaScript(JS)は、Ruby の数倍難しい 初めてのJavaScript 第3版 ――ES2015以降の最新ウェブ開発、2017 例えば上の本は、サイの表紙のサイ本と呼ばれるけど、 これだけ勉強しても、文法しか学べない 改訂2版 Ruby逆引きハンドブック、2018 一方、サイ本と比べて、上の本は、多くの主要モジュールの使い方まで説明している。 大体のコーディングパターンまで学べる。 つまり中級者向けなのは、文法のページが少ないから JSだと、ES3, ES5, ES6 の20年に及ぶ、膨大な文法の変遷を追っていかなければならない。 ES2015(ES6)から、ようやくクラスも出来て、Rubyっぽくなってきた ちょっとした比較でも、あいまい比較演算子== は使ってはならない。 厳密比較演算子=== だけを使うとか、初心者がはまる罠が多い 学ぶ順序としては、Ruby → JS を勧める
138 名前:デフォルトの名無しさん mailto:sage [2022/10/25(火) 23:31:33.41 ID:RDzJGkEc0.net] >>131 では、callback 関数が呼ばれる前に、どちらの処理が呼ばれるか、既に分かっている状態でしょ。 直接引数に、呼ばれる処理を入れている callfunction('huga'); callfunction('hage'); 一方、>>130 では、callback関数が呼ばれる前には、どちらの処理が呼ばれるか、まだ分からない状態。 callback関数の中で初めて、どちらの処理が呼ばれるかが決まる
139 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 00:55:25.26 ID:WkGW4dkw0.net] コンソールからは実行出来るのに、 拡張機能からだと無視されるのは何?
140 名前:デフォルトの名無しさん mailto:sage [2022/10/26(水) 19:58:11.00 ID:radnZEOF0.net] >>132 14位 やっぱ簡単なんだな。
141 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 14:20:33.37 ID:dQ+2i/bt0.net] 乱数の生成について質問です。 日付をシードとした乱数を生成したいのですがどうも偏ります。 シードの採用の仕方にルールなどがあるのでしょうか? xorshiftのものを2個試しましたが 2ことも偏っていました。 https://jsfiddle.net/4dz70wxp/3/
142 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 17:22:23.79 ID:mktFZgumd.net] ちょっとだけ違う初期値に対して乱数がほしいという用途は想定外だろう 欲しいものはMurmurHash3みたいなハッシュ関数ではないか?
143 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 18:09:17.06 ID:HM5QgWcQd.net] 一発目のnext()の値を捨てれば良さそうな気も https://jsfiddle.net/ny0cpm5v/
144 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 18:36:54.83 ID:HM5QgWcQd.net] もう少しいじってみたけどどうやらシードの桁数不足が問題なのかな new Xorshift32(seed * 1000000) とかにするだけで最初の値にもだいぶ幅が出る いやいや偏りってそういうことじゃなくてって話ならごめんだけど
145 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 19:03:49.78 ID:dQ+2i/bt0.net] >>139 不勉強でよくわかってないですが やりたいのは後で再現できる単純にランダムな遅延時間がほしいだけです。 >>140 delayMaxを100にしてみましたら3回目ぐらいから取れそうと感じました。 シードが小さすぎるということは 一般的には シードを与えるなら 乱数関数が受けられるシードの最大数/関数で生成されるシードの最大数をかけて でシードの範囲を広げたほうがいいということなのでしょうか。 それとも単純に今回はシードが小さすぎて特殊事例であまり気にする必要はないと言う感じでしょうか。 お二人ともありがとうございます。
146 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 20:24:11.90 ID:HM5QgWcQd.net] next()が与えられた値にビット演算をあれこれやって次の値を出してるから シードが2桁整数ではほとんどのビットがゼロなために 最初の演算結果が狭い範囲に収まってしまってるんでないかと
147 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 21:20:56.67 ID:dQ+2i/bt0.net] >>143 ありがとうございます https://jsfiddle.net/4dz70wxp/5/ 42億あるうちの下一桁をいじるだけではだめみたいですね。 一日かわればseedも大きく変わるようにして 念の為、3回目あたりをとってみます。 ありがとうございました。
148 名前:デフォルトの名無しさん mailto:sage [2022/10/28(金) 22:43:22.03 ID:HM5QgWcQd.net] https://jsfiddle.net/f9h4zu1x/ 少し間違ってた 桁数が少ないのが問題じゃなくて、ビットの可変幅が狭いのが問題 だから桁数増やしてもシードの増分が1なら結局同じ 日付を上の桁に持っていけば1回目も改善する
149 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:24:18.98 ID:8PfyXsoj0.net] ブラウザ上での音声認識と録音について質問です。 現在、マイクから音声認識を行い、簡単な対話を行うWebアプリを作成しようとしています。 Web Speech APIのSpeechRecognitionを使用して音声認識には成功しましたが、これに加えて録音も同時に行いたいです。 SpeechRecognitionは喋っている内容を取っているので、そこから音声ファイルを作成できないかとやったのですが、目的の資料を見つけることができませんでした。 そのため、SpeechRecognitionと並行してmediaDevices.getUserMediaを使い録音する形で実装しました。 PCでは成功したのですが、スマホ(Android、iOS共に)だとmediaDevices.getUserMediaでストリームを使用とした時点で音声がすべてそちらに取られてしまい、音声認識が出来なくなってしまいました。 今度は録音した音声データをGCPのSpeech-to-Textの音声認識に回すかたちで実装してみましたが、即座に認識結果が得られず、対話のテンポが悪くなるため、微妙な感じになってしまいました。 音声認識と録音を両立する良い方法はないでしょうか?
150 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:30:07.55 ID:yKYFejXH0.net] 他人が書いたJavaScriptのコードは読みにくいですよね?
151 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 15:34:06.32 ID:Wk8IFz/p0.net] >>147 自分が書いたコードすら後から見るとよく分からないなんてことはザラ
152 名前:デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]]) mailto:sage [2022/11/02(水) 15:53:32.48 ID:3LaOl4E/0.net] function double(number){ const result=number*2; return result; }; const a=double(10); console.log(a); でコンソールに20と表示されますが、return resultの所のイメージがつかめません function double(number){ const result=number*2; }; console.log(result); もっと簡単にこれでは20と表示されないんでしょうか?
153 名前:デフォルトの名無しさん (ワッチョイ 174b-2YcT [110.2.215.28 [上級国民]]) mailto:sage [2022/11/02(水) 16:00:00.37 ID:3LaOl4E/0.net] すみません わかりました double(number)に戻り値number*2を返してるんですね だからdouble(10)で20になると
154 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 18:16:59.98 ID:O63UpHJfr.net] >>148 そいつにかまってはいけない
155 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 21:50:32.06 ID:3LaOl4E/0.net] JavaScriptのパズルをやってたんですけど、このコードだけで意味がわかりますか? https://i.imgur.com/A4xj7Qh.jpg 最初の定義とか色々省かれていませんか? 初心者だからはっきりわからないのですが…
156 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 22:07:02.98 ID:zmf8vxSNM.net] これぐらいなら簡単 変数名と関数名がちゃんと付けられてるからそこから読んでいけば普通に読める
157 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 22:12:42.94 ID:3LaOl4E/0.net] >>153 変数のlistとかどこにも定義されて無いんですけど… console.log(list)とか突然書かれても、初心者にはわかりにくい どこから出てきたのかと…
158 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 22:46:00.31 ID:f9FvTICb0.net] >>152 任意の数値リストを突っ込むと最大値出してくれるっていうコードだろこれ
159 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 23:13:35.51 ID:J736PzjWM.net] 問題の方にあるのかも知らんし ここで聞かれても分かんね
160 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 23:36:43.64 ID:3LaOl4E/0.net] 問題はこんな感じです https://i.imgur.com/lImN0zM.jpg (画像の下の方が切れてますが、>>152 の画像と同じものが入っているだけです) あまり親切じゃないから初心者には向いて無いのかな?
161 名前:デフォルトの名無しさん mailto:sage [2022/11/02(水) 23:40:18.85 ID:t/iark2f0.net] 全部負の数値だと使えない
162 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:43:01.93 ID:39/cO+p70.net] このコードは十分初心者向けに書かれていると思うけどねぇ ただmax=0にしているから、基本は0より大きな数の配列の中から最大値を調べる処理という事に
163 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 12:47:18.10 ID:EP9jPLDR0.net] >>159 この学習アプリやってた Google製のJavaScript教育ツール「Grasshopper」は基礎から学べて初心者に優しい https://forest.watch.impress.co.jp/docs/serial/progedu/1404361.html
164 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:53:23.61 ID:78vcP9/m0.net] 次のステップなどで対応するならいいけどね max の初期値を配列の先頭から取れば済むだけだが
165 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 20:27:36.79 ID:EP9jPLDR0.net] ようやくわかりました 2つめの関数の中で前に定義した1つめの関数を実行してるんですね 関数は定義&実行で1ペアと考えないといけない 次に進みます
166 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 08:09:59.45 ID:RzANRCFJ0.net] #を付ける プライベートクラスフィールドが分かりにくい。 解説しているサイトも少ない。
167 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:24:45.79 ID:zC6hz6+Y0.net] Adobe Illustratorのスクリプトを書くのにHTMLの知識いりますか? JavaScriptの入門書を読んでたんですけど、前半のJavaScriptの文法の所まで読み終わりました 後半はHTMLとJavaScriptの組み込み方みたいになってるんだけど、ここ読む必要あるのかな? もちろん知ってた方がためになるんだろうけど、次のAdobe JavaScriptの本へ行こうか迷っています…
168 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:29:11.27 ID:zC6hz6+Y0.net] DTP(印刷)でillustratorを使ってるのでWebは扱っていません
169 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 15:34:00.02 ID:FsgEaHF8r.net] AdobeのjavascriptというかESバージョンめちゃくちゃ古くて記述するの苦労したが最近はどうなんだ
170 名前:164 mailto:sage [2022/11/07(月) 15:35:27.96 ID:zC6hz6+Y0.net] 自己レスですが必要無いそうです ES2015以降も必要無いそうです constとかletが使えないので全部varになってる
171 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 16:15:41.06 ID:5T/PrU7d0.net] >>164 CEPでも使わない限りはHTMLの知識は不要。
172 名前:デフォルトの名無しさん mailto:sage [2022/11/07(月) 16:33:24.89 ID:zC6hz6+Y0.net] >>168 ありがとうございます。
173 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 22:39:38.06 ID:6PYY3JKr0.net] pg9 = win1.pnl.add('group') pg9.orientation = "row" CAN = pg9.add("button",[0,0,100,30],"cancel") OK = pg9.add("button",[0,0,100,30],"OK") CAN.onClick = function(){win1.close()} OK.onClick = function(){ win1.close() dofn() } win1.show() } // テキストを元のサイズに戻すための計算 var txtresize=100/bai*100; // テキストフレームだけを選択する activeDocument.selection = null; // 全ての選択を解除する var txtObj = activeDocument.textFrames; for (var i=0; i<txtObj.length; i++){ // テキストフレーム数だけ繰り返す try { txtObj[i].selected = true; // 選択する }catch(e){} } //選択したテキストを"sel"とする var sel = app.activeDocument.selection; //選択したテキストの数で繰り返す for (i=0; i<sel.length; i++) { //選択したテキストの幅と高さを元の大きさに戻す sel[i].resize(txtresize,txtresize); } // オブジェクトの選択を解除する for (var i=0; i<sel.length; i++){ try{ sel[i].selected = false; }catch(e){} } プログラムの最初の方は省略したのですが、 CAN.onClick = function(){win1.close()}の所で、キャンセルがクリックされた時にそれ以降のプログラムが実行されないようにしたいのですが、どう書き換えればいいでしょうか? return;ではそれ以降が実行されてしまいます
174 名前:デフォルトの名無しさん mailto:sage [2022/11/11(金) 22:42:38.98 ID:6PYY3JKr0.net] CAN.onClick = function(){win1.close();exit();} みたいなことをやりたいのですが、exit()はAdobeScriptにはありません…
175 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 05:24:15.41 ID:/in1tyv80.net] >>170-171 質問の意味がわからない CAN.onClick = function(){win1.close()} で処理は終了している
176 名前:デフォルトの名無しさん mailto:sage [2022/11/12(土) 13:17:11.95 ID:xCg5uX6U0.net] コールバック関数について、伺いたいのですが。 コールバック関数は、引数に渡される関数という理解でいますが。 これは関数であって、オブジェクトメソッドを渡すこともできますでしょうか。 例えば、 object.addEventlistener() などの、メソッドも渡すことができますでしょうか?
177 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 08:09:24.18 ID:YDVUHmoCr.net] object.addEventlistener なら関数だから渡せるけど object.addEventlistener() は渡せないな
178 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 09:42:00.89 ID:wFqjoTWK0.net] >>173 object.addEventlistenerで渡せるが、実行時のthis値が変わるので、期待通りに動作しない bindを使うか、「コールバック関数を渡す関数」にthis値束縛機能があればそれを使う必要がある
179 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 15:10:49.67 ID:xoKJX++V0.net] ありがとうございます。 Object.AddEventlistenerでも、コールバック関数になりうるということですね。 ただし、期待していることはできない。 関数(ユーザー定義)をコールバック関数にすることはイメージつくのですが。 オブジェクトメソッドをコールバック関数にするイメージがつきません。 何か、例文があれば教えていただけますでしょうか?
180 名前:176 [2022/11/13(日) 15:14:57.91 ID:xoKJX++V0.net] あ。addEventlistener以外で構いません。
181 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 15:38:14.40 ID:wFqjoTWK0.net] >>176-177 this値の変え方まで書いているのに、なぜにイメージ? コールバック関数を使ったコードを書いて試せばすぐにわかる問題
182 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 15:46:58.08 ID:wFqjoTWK0.net] Function.prototype.bind https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
183 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 17:36:35.00 ID:BIywqmt20.net] AdobeScriptなのですが、 https://i.imgur.com/Ycwp6Nj.jpg 上の画像の「四角のパスの四隅をハサミツールで切って、塗りを線にする」まではスクリプトで出来るのですが、「短辺を特定する」ということはスクリプトで出来るのでしょうか? 一般的なJavaScriptの話でもいいのですが、出来るとか無理そうとか…
184 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 19:38:06.31 ID:0s117XaL0.net] 質問です、どなたか教えて下さい、どうか宜しくお願いいたします インターネットラジオ JCBA FMはな再生ページ https://www.jcbasimul.com/fmhana 上記サイトを開くとCookie利用承諾の画面が出てきます。この利用承諾画面は document.getElementsByClassName("cookieBanner__btn")[0].click() とすることで自動的にOKボタンを押して閉じることができました。引き続き再生ボタンを押したいので document.getElementsByClassName("MuiSvgIcon-root")[0].click() としましたが、残念ながら自動的に再生ボタンを押すことができません。自動クリック自体が禁止 されているような雰囲気です。たぶんサイト側でクリック禁止にしているのだろうと思いますが これを利用承諾画面と同じようにJacaScriptで自動クリックするする方法はないでしょうか?
185 名前:デフォルトの名無しさん [2022/11/13(日) 20:25:40.17 ID:cqK0B72A0.net] ユーザー操作が起点じゃない場合は音声再生をブロックする、という制限がブラウザ側でかかってることがある その場合はブラウザの設定で解除できるかもしれない
186 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 20:33:38.64 ID:8b+kwr5c0.net] >>181 iframeの中かつshadowDOMの中なので一発で要素を取得できない document.querySelector(".radioPlayer__iframe").contentDocument.querySelector("#player_ui").shadowRoot.querySelector("button").click(); jcba-playerカスタムエレメントはplay()メソッドが実装されてるようなので document.querySelector(".radioPlayer__iframe").contentDocument.querySelector("#player_ui").play(); でもいける
187 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 20:47:17.41 ID:Kw8DgDNz0.net] こうじゃないか document.getElementById("player_ui").shadowRoot.querySelectorAll("button")[0].click() または document.getElementById("player_ui").play();
188 名前:デフォルトの名無しさん mailto:sage [2022/11/13(日) 22:43:20.67 ID:0s117XaL0.net] >>183 すばらしい!有り難うございます!そのどちらの方法でも再生ボタンがクリックできました! 何を勉強したらあなたのような達人になれるのでしょうか?本当に有り難うございました! >>184 お答えくださり有り難うございます。ただ、残念ながらその方法はどちらもNGでした。 "player_ui" を "#player_ui" に変えても駄目なので、すみませんが>>183 を使わせてもらいます。
189 名前:デフォルトの名無しさん mailto:sage [2022/11/14(月) 15:59:19.18 ID:dW/V591r0.net] if( ){ };の( )の中に「関数txtfn()が一度も実行されていなかったら」という条件を書きたいんですけど、どう書けばいいんでしょうか? 無理でしょうか?
190 名前:186 mailto:sage [2022/11/14(月) 16:42:32.41 ID:dW/V591r0.net] すみません、これがコードです。 SEL = activeDocument.selection LAY = activeDocument.activeLayer for(s=0; s<SEL.length; s++) SELfn(SEL[s]) function SELfn(sx){ if(sx.typename != 'PathItem') return if(sx.filled == false) return c1 = sx.fillColor if(c1 != "[GrayColor]"){ val = c1 txtfn(); } } function txtfn(){ alert(val+"です"); } alert("グレースケールです"); 本当は、関数txtfn()が一度も実行されなかった場合に最後に「グレースケールです」と表示したいのですが、 このコードのままだと毎回最後に「グレースケールです」と表示されてしまいます。 「グレースケールです」は1度だけの表示したいのです(表示する回数が多すぎることになるので)
191 名前:デフォルトの名無しさん mailto:sage [2022/11/14(月) 17:23:26.59 ID:Ofrc3j5I0.net] 単にループ前にフラグをfalseにでもしておいて、一度でも実行すればtrueにすれば判断出来るのでは?
192 名前:デフォルトの名無しさん mailto:sage [2022/11/14(月) 17:46:10.99 ID:dW/V591r0.net] >>188 SEL = activeDocument.selection LAY = activeDocument.activeLayer var yk=0; for(s=0; s<SEL.length; s++) SELfn(SEL[s]) function SELfn(sx){ if(sx.typename != 'PathItem') return if(sx.filled == false) return c1 = sx.fillColor if(c1 != "[GrayColor]"){ val = c1 txtfn(); } } function txtfn(){ alert(val+"です"); yk=1; } if(yk!=1){ alert("グレースケールです"); } これで出来ました。 ありがとうございます。
193 名前:デフォルトの名無しさん (ワッチョイ 2abd-masj [133.209.119.15]) mailto:sage [2022/11/14(月) 18:12:47.71 ID:zxQDBIse0.net] すまん、敢えてここで聞かせて Windows しか持っておらず、JavaScript の Safari での動作確認のため極力安い MacBook かなにかを買いたい。 中古でもなんでもいいんだけど、今時の Safari が動くやつって何を選べばいい? Mac も iOS も Safari の系譜もよく分からず途方に暮れてる。 いわゆるブラウザのデベロッパーツールで動作確認したいので、多分 iPhone とかじゃだめなんだよね? アドバイスおねがい
194 名前:デフォルトの名無しさん (スッップ Sd7a-4CYG [49.98.130.245]) mailto:sage [2022/11/14(月) 18:37:09.30 ID:srKPlYrDd.net] safariのバージョンってiOSと連動だって話だったと思うから最新のiOSサポートしてる機種ならええんでないの? Mac系のスレで理由話して最新のiOSが動く安いやつどれ?って聞くのが確実だろう
195 名前:デフォルトの名無しさん [2022/11/14(月) 20:44:37.96 ID:pZNm0HpP0.net] 動作確認のために実機買うなんて景気のいい話だなぁ羨ましい 俺ならBrowserStackとかLambdaTest使っちゃうけどね
196 名前:デフォルトの名無しさん (ワッチョイ dd5f-PnSp [14.8.104.32]) mailto:sage [2022/11/14(月) 21:12:34.76 ID:SgEq73X20.net] iPhone持ってる人に実機テストしてもらっちゃうな
197 名前:190 (ワッチョイ f1bd-masj [122.133.73.185]) mailto:sage [2022/11/14(月) 22:33:47.26 ID:llxM2eVb0.net] >>192 景気なんてよくねーよだからケチりたいんだろ。 でも何そのおもしろそうなキーワードは。調べてくる >>193 これまで作ったのをたまたま iPhone で見たら動いてないのがあってね。 元々 Safari とか眼中には無かったけどそんなに特殊なことやってるとも思ってなかったんで、動かないとか思ってなかった。 あんまり気分悪いんでちょっと調べておこうかと。 >>191 やっぱ最新OS じゃないとダメかということでそこを軸に探すと、フリマで 2万台くらいらしいってことは分かった。 あと iPad の Safari でもデベロッパーツールを動かせるらしいことが分かったので、そっちの線もありそう。 つか MacOS と iOS って違うのね… なにはともあれ、取っ掛かりは掴んだ気がする。 ありがとう
198 名前:デフォルトの名無しさん [2022/11/14(月) 23:54:57.52 ID:h4ns2H1B0.net] イベントオブジェクトを使わず、thisを使って、 そのイベントの発生元の要素を取得することは可能でしょうか?