briank

Kartra Editor Detectors (For Pages/Memberships)

Oct 8th, 2024 (edited)
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // A variety of Kartra Page Builder and Membership Builder (editor) detection strategies
  2.  
  3. // In Membership Builder
  4. window.inMembershipBuilder ||= () => !!window.jsVars?.fonts;
  5.  
  6. // In Page Builder
  7. // (But note that you can defer code execution to preview/live using tracking sections)
  8. window.inPageBuilder ||= () => { try { return parent.jsVars.isPageBuilder; } catch (e) {} };
  9. // -OR-
  10. window.inPageBuilder ||= () => { try { return parent.document.querySelector('body.builderUI'); } catch (e) {} };
  11.  
  12. /*
  13.  * inEditor() returns true if state indicates that the current frame or
  14.  * its parent is Kartra back-end editing a (page or membership) asset.
  15.  */
  16. window.inEditor ||= !(() => { try { return parent.document; } catch (e) { return document; } })().querySelector('head meta[name="description"]');
  17.  
  18. /*
  19.  * inEditor() returns true if state indicates that the current frame or
  20.  * its parent is Kartra back-end editing a (page or membership) asset. As
  21.  * of 2024-10-08, this works for K6 and K7 staging, beta, and production
  22.  * pages & memberships. Likely more subject to change.
  23.  */
  24. window.inEditor ||= () => location.hostname ===
  25. (jv => jv?.secureBaseUrl || jv?.secure_base_url)
  26. (window.jsVars || (() => { try { return parent.jsVars; } catch (e) {} })())
  27. ?.match(/\/([^/]+)/)[1] &&
  28. /\/(?:edit|sites)\/\d/.test(parent.location.pathname);
Advertisement
Add Comment
Please, Sign In to add comment