Skip to content

Commit d075082

Browse files
committed
Fix Chrome navigation warning on feedback form
Re-implements click-to-activate pattern for Google Forms feedback iframe to prevent Chrome from displaying "unsaved changes" warning when navigating away from tutorial pages. Changes: - Replace direct iframe embed with clickable feedback image - Load Google Forms iframe only when user clicks feedback button - Use vanilla JavaScript for better compatibility (no jQuery dependency) This restores the behavior from PR #1953 (2020) which was inadvertently reverted in commit 7f5a336 (May 2024). The direct iframe embedding causes Chrome to detect "unsaved form data" even when users haven't interacted with the form, triggering navigation warnings. The click-to-activate pattern prevents this by only loading the form when explicitly requested. Fixes #6312
1 parent 7c45689 commit d075082

File tree

1 file changed

+29
-1
lines changed

1 file changed

+29
-1
lines changed

_layouts/tutorial_hands_on.html

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,35 @@ <h1 id="gtn-feedback">{{locale['feedback'] | default: "Feedback" }}</h1>
377377
<br>{{ locale['feedback-text-learner'] | default: "Did you use this material as a learner or student? Click the form below to leave feedback." }}<i class="fas fa-hand-point-down"></i>
378378
</p>
379379

380-
<iframe id="feedback-google" class="google-form" src="https://docs.google.com/forms/d/e/1FAIpQLSd4VZptFTQ03kHkMz0JyW9b6_S8geU5KjNE_tLM0dixT3ZQmA/viewform?embedded=true&entry.1235803833={{ own_material_id }}"><a href="https://docs.google.com/forms/d/e/1FAIpQLSd4VZptFTQ03kHkMz0JyW9b6_S8geU5KjNE_tLM0dixT3ZQmA/viewform?embedded=true&entry.1235803833={{ own_material_id }}">Feedback Form</a></iframe>
380+
<div id="feedback-button">
381+
<img src="{{ site.baseurl }}/shared/images/feedback.png" title="Click to activate feedback form" alt="Click here to load feedback form" />
382+
</div>
383+
<div id="feedback-form">
384+
</div>
385+
386+
<script type="text/javascript">
387+
(function (window, document) {
388+
function onDocumentReady(fn) {
389+
if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading") {
390+
fn();
391+
} else {
392+
document.addEventListener('DOMContentLoaded', fn);
393+
}
394+
}
395+
396+
onDocumentReady(function () {
397+
var feedbackButton = document.getElementById('feedback-button');
398+
var feedbackForm = document.getElementById('feedback-form');
399+
400+
if (feedbackButton && feedbackForm) {
401+
feedbackButton.addEventListener('click', function() {
402+
feedbackButton.style.display = 'none';
403+
feedbackForm.innerHTML = '<iframe id="feedback-google" class="google-form" src="https://docs.google.com/forms/d/e/1FAIpQLSd4VZptFTQ03kHkMz0JyW9b6_S8geU5KjNE_tLM0dixT3ZQmA/viewform?embedded=true&entry.1235803833={{ own_material_id }}"><a href="https://docs.google.com/forms/d/e/1FAIpQLSd4VZptFTQ03kHkMz0JyW9b6_S8geU5KjNE_tLM0dixT3ZQmA/viewform?embedded=true&entry.1235803833={{ own_material_id }}">Loading feedback form...</a></iframe>';
404+
});
405+
}
406+
});
407+
})(window, document);
408+
</script>
381409

382410
<h1>{{locale['citing-tutorial'] | default: "Citing this Tutorial"}}</h1>
383411
<p>

0 commit comments

Comments
 (0)