0

我是 Web 开发的新手,您的解决方案的详细演练会很棒。我花了过去几天试图找出这个问题。简单地说,我想从嵌入中按类隐藏一个元素。在这种情况下,班级是formFooter-content,我想隐藏它。还有没有办法保证函数在嵌入渲染后触发,以避免未定义的变量?

var ifr = document.getElementById("JotFormIFrame-211257510373044");
if (ifr) {
  var src = ifr.src;
  var iframeParams = [];
  if (window.location.href && window.location.href.indexOf("?") > -1) {
    iframeParams = iframeParams.concat(window.location.href.substr(window.location.href.indexOf("?") + 1).split('&'));
  }
  if (src && src.indexOf("?") > -1) {
    iframeParams = iframeParams.concat(src.substr(src.indexOf("?") + 1).split("&"));
    src = src.substr(0, src.indexOf("?"))
  }
  iframeParams.push("isIframeEmbed=1");
  ifr.src = src + "?" + iframeParams.join('&');
}
window.handleIFrameMessage = function(e) {
  if (typeof e.data === 'object') {
    return;
  }
  var args = e.data.split(":");
  if (args.length > 2) {
    iframe = document.getElementById("JotFormIFrame-" + args[(args.length - 1)]);
  } else {
    iframe = document.getElementById("JotFormIFrame");
  }
  if (!iframe) {
    return;
  }
  switch (args[0]) {
    case "scrollIntoView":
      iframe.scrollIntoView();
      break;
    case "setHeight":
      iframe.style.height = args[1] + "px";
      break;
    case "collapseErrorPage":
      if (iframe.clientHeight > window.innerHeight) {
        iframe.style.height = window.innerHeight + "px";
      }
      break;
    case "reloadPage":
      window.location.reload();
      break;
    case "loadScript":
      if (!window.isPermitted(e.origin, ['jotform.com', 'jotform.pro'])) {
        break;
      }
      var src = args[1];
      if (args.length > 3) {
        src = args[1] + ':' + args[2];
      }
      var script = document.createElement('script');
      script.src = src;
      script.type = 'text/javascript';
      document.body.appendChild(script);
      break;
    case "exitFullscreen":
      if (window.document.exitFullscreen) window.document.exitFullscreen();
      else if (window.document.mozCancelFullScreen) window.document.mozCancelFullScreen();
      else if (window.document.mozCancelFullscreen) window.document.mozCancelFullScreen();
      else if (window.document.webkitExitFullscreen) window.document.webkitExitFullscreen();
      else if (window.document.msExitFullscreen) window.document.msExitFullscreen();
      break;
  }
  var isJotForm = (e.origin.indexOf("jotform") > -1) ? true : false;
  if (isJotForm && "contentWindow" in iframe && "postMessage" in iframe.contentWindow) {
    var urls = {
      "docurl": encodeURIComponent(document.URL),
      "referrer": encodeURIComponent(document.referrer)
    };
    iframe.contentWindow.postMessage(JSON.stringify({
      "type": "urls",
      "value": urls
    }), "*");
  }
};
window.isPermitted = function(originUrl, whitelisted_domains) {
  var url = document.createElement('a');
  url.href = originUrl;
  var hostname = url.hostname;
  var result = false;
  if (typeof hostname !== 'undefined') {
    whitelisted_domains.forEach(function(element) {
      if (hostname.slice((-1 * element.length - 1)) === '.'.concat(element) || hostname === element) {
        result = true;
      }
    });
    return result;
  }
}
if (window.addEventListener) {
  window.addEventListener("message", handleIFrameMessage, false);
} else if (window.attachEvent) {
  window.attachEvent("onmessage", handleIFrameMessage);
}
<iframe id="JotFormIFrame-211257510373044" title="Speak With Us Application" onload="window.parent.scrollTo(0,0)" allowtransparency="true" allowfullscreen="true" allow="geolocation; microphone; camera" src="https://form.jotform.com/211257510373044" frameborder="0"
  style="
      min-width: 100%;
      height:539px;
      border:none;" scrolling="no">
    </iframe>

4

0 回答 0