OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 var iframeUpdateIntervalID; | |
6 | |
7 function selectExample(el) { | |
8 setIframeSrc(el.dataset.href); | |
9 deselectAllNavItems(); | |
10 selectNavItem(el); | |
11 } | |
12 | |
13 function selectNavItem(el) { | |
14 el.classList.add('selected'); | |
15 } | |
16 | |
17 function deselectAllNavItems() { | |
18 var navItemEls = document.querySelectorAll('.nav-item'); | |
19 for (var i = 0; i < navItemEls.length; ++i) { | |
20 navItemEls[i].classList.remove('selected'); | |
21 } | |
22 } | |
23 | |
24 function setIframeSrc(src) { | |
25 var iframeEl = document.querySelector('iframe'); | |
26 | |
27 window.clearInterval(iframeUpdateIntervalID); | |
28 iframeEl.style.height = ''; | |
29 iframeEl.src = src; | |
30 } | |
31 | |
32 document.addEventListener('DOMContentLoaded', function () { | |
33 var iframeEl = document.querySelector('iframe'); | |
34 var iframeWrapperEl = document.querySelector('.iframe-wrapper'); | |
35 var navItemEls = document.querySelectorAll('.nav-item'); | |
36 | |
37 for (var i = 0; i < navItemEls.length; ++i) { | |
38 navItemEls[i].addEventListener('click', function (e) { | |
39 selectExample(this); | |
40 }); | |
41 } | |
42 | |
43 iframeEl.addEventListener('load', function () { | |
44 var iframeDocument = this.contentWindow.document; | |
45 var iframeBodyEl = iframeDocument.body; | |
46 iframeEl.style.height = iframeBodyEl.scrollHeight + 'px'; | |
47 | |
48 // HACK: polling the body height to update the iframe. There's got to be a | |
49 // better way to do this... | |
50 var prevBodyHeight; | |
51 var prevWrapperHeight; | |
52 iframeUpdateIntervalID = window.setInterval(function () { | |
53 var bodyHeight = iframeBodyEl.getBoundingClientRect().height; | |
54 var wrapperHeight = iframeWrapperEl.clientHeight; | |
55 if (bodyHeight != prevBodyHeight || wrapperHeight != prevWrapperHeight) { | |
56 // HACK: magic 4... without it, the scrollbar is always visible. :( | |
57 var newHeight = Math.max(wrapperHeight - 4, bodyHeight); | |
58 iframeEl.style.height = newHeight + 'px'; | |
59 prevBodyHeight = bodyHeight; | |
60 prevWrapperHeight = wrapperHeight; | |
61 } | |
62 }, 100); // .1s | |
63 }, false); | |
64 | |
65 var closeButtonEl = document.querySelector('.close-button'); | |
66 closeButtonEl.addEventListener('click', function () { | |
67 window.close(); | |
68 }); | |
69 | |
70 // select the first example. | |
71 selectExample(document.querySelector('.nav-item')); | |
72 }); | |
OLD | NEW |