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