68 lines
1.7 KiB
JavaScript
68 lines
1.7 KiB
JavaScript
/* global discourseUrl */
|
|
/* global discourseUserName */
|
|
/* global discourseEmbedUrl */
|
|
(function() {
|
|
var comments = document.getElementById('discourse-comments'),
|
|
iframe = document.createElement('iframe');
|
|
if (typeof discourseUserName === 'undefined') {
|
|
iframe.src =
|
|
[ discourseUrl,
|
|
'embed/comments?embed_url=',
|
|
encodeURIComponent(discourseEmbedUrl)
|
|
].join('');
|
|
} else {
|
|
iframe.src =
|
|
[ discourseUrl,
|
|
'embed/comments?embed_url=',
|
|
encodeURIComponent(discourseEmbedUrl),
|
|
'&discourse_username=',
|
|
discourseUserName
|
|
].join('');
|
|
}
|
|
iframe.id = 'discourse-embed-frame';
|
|
iframe.width = "100%";
|
|
iframe.frameBorder = "0";
|
|
iframe.scrolling = "no";
|
|
comments.appendChild(iframe);
|
|
|
|
// Thanks http://amendsoft-javascript.blogspot.ca/2010/04/find-x-and-y-coordinate-of-html-control.html
|
|
function findPosY(obj)
|
|
{
|
|
var top = 0;
|
|
if(obj.offsetParent)
|
|
{
|
|
while(1)
|
|
{
|
|
top += obj.offsetTop;
|
|
if(!obj.offsetParent)
|
|
break;
|
|
obj = obj.offsetParent;
|
|
}
|
|
}
|
|
else if(obj.y)
|
|
{
|
|
top += obj.y;
|
|
}
|
|
return top;
|
|
}
|
|
|
|
function postMessageReceived(e) {
|
|
if (!e) { return; }
|
|
if (discourseUrl.indexOf(e.origin) === -1) { return; }
|
|
|
|
if (e.data) {
|
|
if (e.data.type === 'discourse-resize' && e.data.height) {
|
|
iframe.height = e.data.height + "px";
|
|
}
|
|
|
|
if (e.data.type === 'discourse-scroll' && e.data.top) {
|
|
// find iframe offset
|
|
var destY = findPosY(iframe) + e.data.top;
|
|
window.scrollTo(0, destY);
|
|
}
|
|
}
|
|
}
|
|
window.addEventListener('message', postMessageReceived, false);
|
|
|
|
})();
|