From b0cf1ce9fe29e44d968361265491fe2638120cfd Mon Sep 17 00:00:00 2001 From: Ouvill Date: Sun, 18 Aug 2024 16:24:40 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20$.isBase64(str)=E3=81=AE=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=81=A7=20audio,=20video=20=E3=81=AE=E9=96=A2?= =?UTF-8?q?=E6=95=B0=E3=82=82=E5=8F=97=E3=81=91=E5=85=A5=E3=82=8C=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit playseのstorageにdata-urlのバイナリデータを渡しても音が鳴るようになります。 ## 備考 - isBase64 という関数名ですが、isDataUrlという関数名にしたほうが良いかもしれません。 - imageを受け入れたいとき、audioを受け入れたいとき、videoを受け入れたいときと区別するべきかもしれません。 - 判定方法が甘くdata-urlの一部しかtrueになりません。また厳密にdata-urlの要件を満たしていないものでも`true`になりえます。 --- tyrano/libs.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/tyrano/libs.js b/tyrano/libs.js index 5eb93ddf..824cfabf 100644 --- a/tyrano/libs.js +++ b/tyrano/libs.js @@ -1299,14 +1299,16 @@ }); }; + /** + * 文字列がdata-URLであるかを判定する + * @param {string} str - 判定する文字列 + * @returns {boolean} data-URLの場合はtrue、そうでない場合はfalse + */ $.isBase64 = function (str) { - if (!str) return false; - - if (str.substr(0, 10) == "data:image") { - return true; - } else { - return false; - } + if (!str || typeof str !== "string" ) return false; + + // 画像, 音声, 動画ファイルを受け入れる + return str.startsWith("data:image") || str.startsWith("data:audio") || str.startsWith("data:video") }; //オブジェクトの個数をもってきます。1