Skip to content

Commit 97607d9

Browse files
Only re-render custom HTML when it’s been changed
1 parent ecb0ed4 commit 97607d9

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

  • src/player/types/ContentView

src/player/types/ContentView/type.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,11 +236,22 @@ FrameTrail.defineType(
236236

237237
self._clearContentCollection();
238238

239+
var _cvContents = self.contentViewContainer.querySelector('.contentViewContents');
240+
var existingContainer = _cvContents.querySelector('.customhtmlContainer');
241+
242+
// Skip rebuild if the source HTML hasn't changed since last render.
243+
// This preserves DOM elements dynamically created by onReady/custom scripts.
244+
if (existingContainer && self._lastCustomHTML === self.contentViewData.html) {
245+
break;
246+
}
247+
248+
var htmlChanged = (self._lastCustomHTML !== undefined && self._lastCustomHTML !== self.contentViewData.html);
249+
self._lastCustomHTML = self.contentViewData.html;
250+
239251
var customhtmlContainer = document.createElement('div');
240252
customhtmlContainer.className = 'customhtmlContainer';
241253
customhtmlContainer.innerHTML = self.contentViewData.html;
242254

243-
var _cvContents = self.contentViewContainer.querySelector('.contentViewContents');
244255
_cvContents.innerHTML = '';
245256
_cvContents.appendChild(customhtmlContainer);
246257

@@ -250,6 +261,19 @@ FrameTrail.defineType(
250261
}
251262
});
252263

264+
// Re-fire onReady when HTML source changed so dynamic content is recreated
265+
if (htmlChanged) {
266+
var HypervideoModel = FrameTrail.module('HypervideoModel');
267+
if (HypervideoModel.events.onReady) {
268+
try {
269+
var readyEvent = new Function('FrameTrail', 'hypervideo', HypervideoModel.events.onReady);
270+
readyEvent(FrameTrail, FrameTrail.module('HypervideoController'));
271+
} catch (e) {
272+
console.warn('onReady handler error after CustomHTML update: ' + e.message);
273+
}
274+
}
275+
}
276+
253277
break;
254278

255279
case 'Transcript':

0 commit comments

Comments
 (0)