PluginProbe
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder / 51.1.86
King Addons for Elementor – 100+ Elementor Widgets, 4 000+ Elementor Templates, WooCommerce Builder, Mega Menu, Popup Builder v51.1.86
51.1.86 51.1.84 51.1.85 51.1.83 51.1.82 51.1.81 51.1.79 51.1.78 51.1.77 51.1.76 51.1.74 51.1.75 51.1.65 51.1.64 51.1.63 trunk 51.1.14 51.1.2 51.1.35 51.1.36 51.1.37 51.1.38 51.1.39 51.1.44 51.1.45 All 40 releases
← All changes | includes/widgets/Popup/Popup.php +13 -12 51.1.36 → 51.1.86 View file →
@@ -656,16 +656,16 @@
656 656 $this_ID = $this->get_id();
657 657 $class_ID = 'king-addons-popup-' . $this_ID;
658 658 $overlay_ID = 'king-addons-popup-overlay-' . $this_ID;
659 659
660 + $class_selector_js = esc_attr(wp_json_encode('.' . $class_ID));
661 + $overlay_selector_js = esc_attr(wp_json_encode('.' . $overlay_ID));
662 +
660 663 if (!empty($settings['kng_popup_template'])) {
661 664
662 665 echo '<div class="king-addons-popup-overlay ' .
663 666 esc_attr($overlay_ID) . '" onclick="';
664 - echo "document.querySelector('." .
665 - esc_attr($class_ID) . "').classList.toggle('king-addons-popup-active'); document.querySelector('." .
666 - esc_attr($overlay_ID) . "').style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector('." .
667 - esc_attr($overlay_ID) . "').style.display = 'none'; document.body.style.pointerEvents = '';}, 500);";
667 + echo "document.querySelector(" . $class_selector_js . ").classList.toggle('king-addons-popup-active'); document.querySelector(" . $overlay_selector_js . ").style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector(" . $overlay_selector_js . ").style.display = 'none'; document.body.style.pointerEvents = '';}, 500);";
668 668 echo '"></div>';
669 669
670 670 echo '<div class="king-addons-popup ' .
671 671 esc_attr($class_ID) . ' king-addons-popup-position-' .
@@ -678,12 +678,9 @@
678 678 if ('' != $settings['kng_popup_close_btn_icon']['value']) {
679 679
680 680 echo '<div class="king-addons-popup-close-button king-addons-popup-close-button-' .
681 681 esc_attr($this_ID) . '" onclick="';
682 - echo "document.querySelector('." .
683 - esc_attr($class_ID) . "').classList.toggle('king-addons-popup-active'); document.querySelector('." .
684 - esc_attr($overlay_ID) . "').style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector('." .
685 - esc_attr($overlay_ID) . "').style.display = 'none'; document.body.style.pointerEvents = '';}, 500);";
682 + echo "document.querySelector(" . $class_selector_js . ").classList.toggle('king-addons-popup-active'); document.querySelector(" . $overlay_selector_js . ").style.opacity = '0'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector(" . $overlay_selector_js . ").style.display = 'none'; document.body.style.pointerEvents = '';}, 500);";
686 683 echo '">';
687 684
688 685 Icons_Manager::render_icon($settings['kng_popup_close_btn_icon']);
689 686 echo '</div>';
@@ -705,12 +702,9 @@
705 702 if ('' == $settings['kng_popup_disable_btn']) {
706 703
707 704 echo '<button class="king-addons-popup-button king-addons-popup-button-' .
708 705 esc_attr($this_ID) . '" onclick="';
709 - echo "document.querySelector('." .
710 - esc_attr($class_ID) . "').classList.toggle('king-addons-popup-active'); document.querySelector('." .
711 - esc_attr($overlay_ID) . "').style.display = 'block'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector('." .
712 - esc_attr($overlay_ID) . "').style.opacity = '1';}, 1); setTimeout(function () {document.body.style.pointerEvents = '';}, 500);";
706 + echo "document.querySelector(" . $class_selector_js . ").classList.toggle('king-addons-popup-active'); document.querySelector(" . $overlay_selector_js . ").style.display = 'block'; document.body.style.pointerEvents = 'none'; setTimeout(function () {document.querySelector(" . $overlay_selector_js . ").style.opacity = '1';}, 1); setTimeout(function () {document.body.style.pointerEvents = '';}, 500);";
713 707 echo '">' .
714 708 esc_html($settings['kng_popup_btn_text']) . '</button>';
715 709
716 710 }
@@ -722,8 +716,15 @@
722 716 document.addEventListener('DOMContentLoaded', function () {
723 717
724 718 const offCanvas = document.querySelector('." . esc_js($class_ID) . "');
725 719 const overlay = document.querySelector('." . esc_js($overlay_ID) . "');
720 +
721 + // With no template picked the widget prints a placeholder instead of
722 + // the panel markup, so these lookups come back empty. Bail out rather
723 + // than throwing on insertBefore and losing the handlers below.
724 + if (!offCanvas || !overlay) {
725 + return;
726 + }
726 727
727 728 // Moves all Popupes to right after the <body> opens
728 729 document.body.insertBefore(overlay, document.body.firstChild);
729 730 document.body.insertBefore(offCanvas, document.body.firstChild);