<html>
<head>
<title>polymer</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<script src="https://rawgit.com/webcomponents/webcomponentsjs/master/webcomponents-lite.js"></script>
<link rel="import" href="https://rawgit.com/Polymer/polymer/master/polymer.html">
</head>
<body>
<dom-module id="x-test">
<template>
<h1>Mutation Observer Test</h1>
<button on-tap="addTapped">Add Node</button>
<button on-tap="removeTapped">Remove Node</button>
<div id="insertion_point" style="color:red"></div>
<div id="console_log"></div>
</template>
</dom-module>
<script>
HTMLImports.whenReady(function() {
Polymer({
is: 'x-test',
properties: {
_mo: {type: Object, value: function () {return {};}}
},
ready: function () {
// first, define the mutation observer.
var t = this;
this._mo = new MutationObserver(function (mutations) {
// because mutations are "collected in intervals"
mutations.forEach(function(mutation) {
t.consoleLog("node added or removed detected");
// add in your tasks when node is added/removed here
});
});
// next, start observing.
this._mo.observe(this.$.insertion_point, {
// configure `childList` to be true to listen to node addition/deletion
childList: true
});
},
consoleLog: function (m) {
var el = document.createElement("div");
el.innerHTML = m;
Polymer.dom(this.$.console_log).appendChild(el);
},
addTapped: function () {
var el = document.createElement("span");
el.innerHTML = "new node!";
Polymer.dom(this.$.insertion_point).appendChild(el);
},
removeTapped: function () {
var el = Polymer.dom(this.$.insertion_point).lastElementChild;
Polymer.dom(this.$.insertion_point).removeChild(el);
}
});
});
</script>
<x-test></x-test>
</body>
</html>
Output
You can jump to the latest bin by adding /latest
to your URL
Keyboard Shortcuts
Shortcut | Action |
---|---|
ctrl + [num] | Toggle nth panel |
ctrl + 0 | Close focused panel |
ctrl + enter | Re-render output. If console visible: run JS in console |
Ctrl + l | Clear the console |
ctrl + / | Toggle comment on selected lines |
ctrl + ] | Indents selected lines |
ctrl + [ | Unindents selected lines |
tab | Code complete & Emmet expand |
ctrl + shift + L | Beautify code in active panel |
ctrl + s | Save & lock current Bin from further changes |
ctrl + shift + s | Open the share options |
ctrl + y | Archive Bin |
Complete list of JS Bin shortcuts |
JS Bin URLs
URL | Action |
---|---|
/ | Show the full rendered output. This content will update in real time as it's updated from the /edit url. |
/edit | Edit the current bin |
/watch | Follow a Code Casting session |
/embed | Create an embeddable version of the bin |
/latest | Load the very latest bin (/latest goes in place of the revision) |
/[username]/last | View the last edited bin for this user |
/[username]/last/edit | Edit the last edited bin for this user |
/[username]/last/watch | Follow the Code Casting session for the latest bin for this user |
/quiet | Remove analytics and edit button from rendered output |
.js | Load only the JavaScript for a bin |
.css | Load only the CSS for a bin |
Except for username prefixed urls, the url may start with http://jsbin.com/abc and the url fragments can be added to the url to view it differently. |