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 flattenObject = function(ob) { | |
| var toReturn = {}; | |
| for (var i in ob) { | |
| if (!ob.hasOwnProperty(i)) continue; | |
| if ((typeof ob[i]) == 'object') { | |
| var flatObject = flattenObject(ob[i]); | |
| for (var x in flatObject) { | |
| if (!flatObject.hasOwnProperty(x)) continue; |
| find . -type f | xargs -I {} bash -c "iconv -f utf-8 -t utf-16 {} &>/dev/null || echo {}" > utf8_fail |
| <!doctype html> | |
| <html> | |
| <head> | |
| <!-- Priority tags. These must come first. --> | |
| <meta charset="utf-8"> | |
| <meta http-equiv="x-ua-compatible" content="ie=edge; chrome=1"> <!-- Render Chrome if available or using latest version of Internet Explorer (Recommended). --> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> | |
| <!-- Document Title --> | |
| <title>Page Title</title> | |
| <!-- Allows control over where resources are loaded from. Place as early in the document as possible, only applies to content below this tag. --> |
| var fileTransfer = new FileTransfer(); | |
| fileTransfer.onprogress = function(result){ | |
| var percent = result.loaded / result.total * 100; | |
| percent = Math.round(percent); | |
| console.log('Downloaded: ' + percent + '%'); | |
| }; | |
| fileTransfer.download(remoteFile, localPath, successCallback, errorCallback); |
| <?php | |
| /* | |
| 参考自: | |
| http://darklaunch.com/2010/09/01/http-status-codes-in-php-http-header-response-code-function | |
| http://snipplr.com/view/68099/ | |
| */ | |
| function HTTPStatus($num) { | |
| $http = array( |
| /*! | |
| CSS bookmarklet to highlight WAI-ARIA landmark roles etc. | |
| NDF, 3 December 2013. | |
| http://w3.org/TR/wai-aria/roles#landmark_roles | |
| Inspiration: https://addons.mozilla.org/en-US/firefox/addon/juicy-studio-accessibility-too/ | |
| javascript:(function(){ | |
| var D=document,s=D.createElement("link");s.href="//dl.dropbox.com/u/3203144/wai-aria/wai-aria.css";s.rel="stylesheet";D.head.appendChild(s) |
| { | |
| // http://eslint.org/docs/rules/ | |
| "ecmaFeatures": { | |
| "binaryLiterals": false, // enable binary literals | |
| "blockBindings": false, // enable let and const (aka block bindings) | |
| "defaultParams": false, // enable default function parameters | |
| "forOf": false, // enable for-of loops | |
| "generators": false, // enable generators | |
| "objectLiteralComputedProperties": false, // enable computed object literal property names |
All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.
Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.
elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent