Skip to content

Commit 6f5ab6a

Browse files
authored
Merge pull request #664 from D4rkMindz/master
Added turbolinks compatibility
2 parents b850256 + e314717 commit 6f5ab6a

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

webroot/js/toolbar.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,25 @@ if (elem) {
9292
};
9393
};
9494

95-
// Bind on ready callback.
95+
// Bind on ready callbacks to DOMContentLoaded (native js) and turbolinks:load
96+
// Turbolinks replaces the body and merges the head of an HTML page.
97+
// Since the body is already loaded (DOMContentLoaded), the event is not triggered.
9698
if (doc.addEventListener) {
97-
doc.addEventListener('DOMContentLoaded', onReady, false);
98-
doc.addEventListener('DOMContentLoaded', proxyAjaxOpen, false);
99-
doc.addEventListener('DOMContentLoaded', proxyAjaxSend, false);
99+
// This ensures that all event listeners get applied only once.
100+
if (!window.__debugKitListenersApplied) {
101+
// The DOMContentLoaded is for all pages that do not have Turbolinks
102+
doc.addEventListener('DOMContentLoaded', onReady, false);
103+
doc.addEventListener('DOMContentLoaded', proxyAjaxOpen, false);
104+
doc.addEventListener('DOMContentLoaded', proxyAjaxSend, false);
105+
106+
// turbolinks:load is the alternative DOMContentLoaded Event of Turbolinks
107+
// https://github.com/turbolinks/turbolinks
108+
// https://github.com/cakephp/debug_kit/pull/664
109+
doc.addEventListener('turbolinks:load', onReady, false);
110+
doc.addEventListener('turbolinks:load', proxyAjaxOpen, false);
111+
doc.addEventListener('turbolinks:load', proxyAjaxSend, false);
112+
window.__debugKitListenersApplied = true;
113+
}
100114
} else {
101115
throw new Error('Unable to add event listener for DebugKit. Please use a browser' +
102116
'that supports addEventListener().');

0 commit comments

Comments
 (0)