Packages
phoenix_live_reload
0.4.0
1.6.2
1.6.1
1.6.0
1.5.3
1.5.2
1.5.1
1.5.0
1.4.1
1.4.0
1.3.3
1.3.2
1.3.1
1.3.0
1.2.4
1.2.3
retired
1.2.2
1.2.1
1.2.0
1.2.0-rc.0
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.6.0
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
Provides live-reload functionality for Phoenix
Current section
Files
Jump to
Current section
Files
priv/static/phoenix_live_reload.js
var buildFreshUrl = function(url) {
var date = Math.round(Date.now() / 1000).toString();
url = url.replace(/(\&|\\?)vsn=\d*/, '');
return url + (url.indexOf('?') >= 0 ? '&' : '?') +'vsn=' + date;
};
var repaint = function() {
var browser = navigator.userAgent.toLowerCase();
if(browser.indexOf('chrome') > -1) setTimeout( function() { document.body.offsetHeight; }, 25);
};
var cssStrategy = function() {
[].slice
.call(window.top.document.querySelectorAll('link[rel=stylesheet]'))
.filter(function(link) { return link.href })
.forEach(function(link) { link.href = buildFreshUrl(link.href) });
repaint();
};
var defaultStrategy = function(chan) {
chan.off("assets_change");
window.top.location.reload();
};
var reloadStrategies = {
css: cssStrategy,
default: defaultStrategy
};
socket.connect();
var chan = socket.chan("phoenix:live_reload", {})
chan.on("assets_change", function(msg) {
var reloadStrategy = reloadStrategies[msg.asset_type] || reloadStrategies.default;
reloadStrategy(chan);
});
chan.join();