The main difference between the two pages is the method of sending messages. Recieving messages is the same in both.
Send messages to iframe using iframeEl.contentWindow.postMessage
Recieve messages using window.addEventListener('message')
var width = 400, | |
height = 400, | |
endAngle = 2 * Math.PI, | |
colors = d3.scale.category20(); | |
var svg = d3.select("body").append("svg") | |
.attr("class", "pie") | |
.attr("height", height) | |
.attr("width", width); |
First we'll update your local master
branch. Go to your local project and check out the branch you want to merge into (your local master
branch)
$ git checkout master
Fetch the remote, bringing the branches and their commits from the remote repository.
You can use the -p
, --prune
option to delete any remote-tracking references that no longer exist in the remote. Commits to master
will be stored in a local branch, remotes/origin/master
.
I recently had several days of extremely frustrating experiences with service workers. Here are a few things I've since learned which would have made my life much easier but which isn't particularly obvious from most of the blog posts and videos I've seen.
I'll add to this list over time – suggested additions welcome in the comments or via twitter.com/rich_harris.
Chrome 51 has some pretty wild behaviour related to console.log
in service workers. Canary doesn't, and it has a load of really good service worker related stuff in devtools.
# Facebook Graph API Example in Python | |
# by James Thornton, http://jamesthornton.com | |
# Facebook API Docs | |
# https://developers.facebook.com/docs/graph-api/using-graph-api#reading | |
# Get Your Facebook Access Token Here... | |
# https://developers.facebook.com/tools/explorer/145634995501895/?method=GET&path=me | |
# Before running this script... |
const DOCUMENT_EVENTS = [ | |
'mousemove', 'mousedown', 'click', | |
'touchmove', 'touchstart', 'touchend', | |
'keydown', 'keypress' | |
]; | |
export class IdleTimer { | |
constructor(onIdleTimeout, timeout) { | |
this.onIdleTimeout = onIdleTimeout; | |
this.timeout = timeout; |
// the cache version gets updated every time there is a new deployment | |
const CACHE_VERSION = 10; | |
const CURRENT_CACHE = `main-${CACHE_VERSION}`; | |
// these are the routes we are going to cache for offline support | |
const cacheFiles = ['/', '/about-me/', '/projects/', '/offline/']; | |
// on activation we clean up the previously registered service workers | |
self.addEventListener('activate', evt => | |
evt.waitUntil( |
<html> | |
<head> | |
<meta name="mobile-web-app-capable" content="yes" /> | |
<meta name="apple-touch-fullscreen" content="yes" /> | |
<meta name="apple-mobile-web-app-title" content="Expo" /> | |
<meta name="apple-mobile-web-app-capable" content="yes" /> | |
<meta name="apple-mobile-web-app-status-bar-style" content="default" /> | |
<link | |
rel="apple-touch-icon" | |
sizes="180x180" |