前提・実現したいこと
formrunというサービスをどのような仕組みになっているのか気になったため埋め込み用スクリプトのコードを読んで見たのですが、イマイチ意味がわかりません。
どなたか解説していただけると幸いです。
よろしくお願いいたします。
該当のソースコード
javascript
1! function i(a, u, d) { 2 function f(r, e) { 3 if (!u[r]) { 4 if (!a[r]) { 5 var t = "function" == typeof require && require; 6 if (!e && t) return t(r, !0); 7 if (s) return s(r, !0); 8 var n = new Error("Cannot find module '" + r + "'"); 9 throw n.code = "MODULE_NOT_FOUND", n 10 } 11 var o = u[r] = { 12 exports: {} 13 }; 14 a[r][0].call(o.exports, function (e) { 15 return f(a[r][1][e] || e) 16 }, o, o.exports, i, a, u, d) 17 } 18 return u[r].exports 19 } 20 for (var s = "function" == typeof require && require, e = 0; e < d.length; e++) f(d[e]); 21 return f 22}( 23{ 1: [function (e, r, t) { 24 "use strict"; 25 var o = []; 26 27 function n() { 28 Array.prototype.forEach.call(document.querySelectorAll(".formrun-embed"), function (e) { 29 ! function (e) { 30 var r = e.dataset.formrunForm; 31 r || console.error("data-formrun-form is not set."), /@[^/]+/.test(r) || console.error("data-formrun-form is invalid: " + r); 32 var t = "https://form.run/embed/" + r, 33 n = document.createElement("iframe"); 34 n.setAttribute("src", t), n.setAttribute("frameborder", "no"), n.style.backgroundColor = "#FFFFFF", n.style.width = "100%", n.style.height = "0", e.dataset.formrunRedirect && n.addEventListener("load", function () { 35 n.contentWindow.postMessage({ 36 formrunRedirect: !0 37 }, "*") 38 }), e.appendChild(n), o.push(n) 39 }(e) 40 }) 41 } 42 window.addEventListener("message", function (e) { 43 if ("https://form.run" == e.origin) { 44 var r = JSON.parse(e.data); 45 r.height && o.forEach(function (e) { 46 0 <= e.getAttribute("src").indexOf(r.friendlyKey) && (e.style.display = "block", e.style.height = r.height + "px") 47 }) 48 } 49 }, !1), "loading" == document.readyState ? document.addEventListener("DOMContentLoaded", n, !1) : n() 50 }, 51 {} 52] 53}, 54{}, 55[1]); 56
読んで意味がわからない人が解説してもらって意味を理解できるのかどうかはちょっと疑問ですが、
これ全部を解説してもらうとお金が発生しそうなレベルで大変だと思うので、一部に絞ってきいたほうがよいのでは?
ここのこの書き方がわからないのですが、とか。
100のうちもし1でも理解できているのでしたら、その1部分を質問本文に記載してください。
「全部解説して」というのは結局他人のコードですし、他人である回答者も負担が大きすぎます。
調べて全く出てきませんか?調べ方は問題ないのでしょうか?
それにせめてそのサービスのURLくらいはリンク貼ってもらいたいものです。
※正直なところ「内容きちんと理解できてないサービスを使うの?」という疑問は多くの人が持ちます。
興味本位であればそれこそ「問題・課題」を明示すべきです。
本当に、このスクリプト単体で完結してるものなのでしょうか?
JavaScriptの場合、他の箇所でも読まれているものと連携して実行することも多々あります。
他にも関連するJavaScriptがあるなら、それも載せていただかないと、回答は得られないかと思います。
コード見た感じminifiedしてあったのを広げただけっぽいので、本来はこれだけじゃないはずですね。JavaScriptも。
プラグインの元コードみたいな感じです。
えーっと、分からないなら実際にサービス元に問い合わせてください。
ぶっちゃけ中身はありません。iframeに流し込んでるだけですよ。
あなたの回答
tips
プレビュー