diff --git a/app/assets/javascripts/widget.js b/app/assets/javascripts/widget.js index 1cfd88c..2726ab5 100644 --- a/app/assets/javascripts/widget.js +++ b/app/assets/javascripts/widget.js @@ -1456,6 +1456,7 @@ }); break; case "frame_state_change": + console.log("frame_state_change"); var A = document.getElementById(e.frameDivId) , R = d && d.data , U = R && R.frameState diff --git a/app/javascript/src/freshdesk/chat_widget_setup.js b/app/javascript/src/freshdesk/chat_widget_setup.js index ddbdd79..b0f9213 100644 --- a/app/javascript/src/freshdesk/chat_widget_setup.js +++ b/app/javascript/src/freshdesk/chat_widget_setup.js @@ -59,10 +59,22 @@ function flushFreshchat() { delete window.history.replaceState } -// Before page is cached +// Navigating to another page +document.addEventListener("turbolinks:visit", function() { + if(window.fcWidget) { + window.fcWidget.destroy() + } else { + console.warn("No widget found!") + } +}) + document.addEventListener("turbolinks:before-cache", function() { const scriptTag = document.getElementById(freshChatScriptTagId) scriptTag.parentNode.removeChild(scriptTag) + + // Remove css that will be re-added when loading the widget + document.querySelectorAll('link[href*="widget.css"]').forEach(l => l.parentNode.removeChild(l)) + document.querySelectorAll('link[href*="cb.css"]').forEach(l => l.parentNode.removeChild(l)) }) // After turbolinks loaded