I think your are taking this to the incorrect way. Loading 60 different pages is crazy, and for sure your computer and browser are suffering with this.
I think a better approach would be (as you said) loading your iframes as they are requested. I'm assuming that all your iframes are hidden (and you are using this modal system), so we could do something like this:
<button class="w3-btn w3-light-blue" data-open-modal="id03">Instruction</button>
<div id="id03" class="w3-modal" data-url="your-iframe-url"></div>
You first defined a button
with the data-attribute data-open-modal
which indicate that this button will open a modal. Next, you have your modal div
with data-url
defining the URL to use in the iframe. So, this is the JavaScript to do the trick (with jQuery, sorry no time of vanilla):
// We find all the buttons 'data-open-modal'
$('[data-open-modal]').click(function (e) {
// We get the ID of the modal to open
var modalId = $(this).data('open-modal');
// We set a modal reference (shortcut)
var $modal = $(modalId);
// We get the iframe URL from the modal data-url
var iframeURL = $modal.data('url');
// We show the modal
$modal.display(); // display: block;
// We create the iframe inside using the URL
$modal.append('<iframe src="' + iframeURL + '" frameborder="0" height="700px" style="width: 800px">');
// We bind a click event when the user clicks on the "X" to close the modal and whe delete the iframe
$modal.find('.w3-closebtn').on('click', function (e) {
$modal.find('iframe').remove(); // Delete the iframe
});
});
I haven't tested this code, but it should work!