var FILE = 'menu.less',
SELECTOR = '.icon-hh:hover::before';
var sheets = document.styleSheets,
sheet,
i = 0,
imax = sheets.length,
rule;
for (; i < imax; i++) {
sheet = sheets[i];
if (sheet.href && sheet.href.indexOf(FILE) !== -1)
break;
}
if (i === imax)
throw new Error('File Not Found');
i = 0;
imax = sheet.cssRules.length;
for (; i < imax; i++) {
rule = sheet.cssRules[i];
if (rule.selectorText === SELECTOR)
break;
}
if (i === imax)
throw new Error('Selector Not Found');
rule.style.background = 'green';
function clearTags(str){
var trim = String.prototype.trim.call.bind(String.prototype.trim);
return str
.split(',')
.map(trim);
}
postMessage
, то проблем с x instanceof RegExp/Array
не должно быть — // top
frames.myframe.postMessage([ 'action', [], /x/ ], '*');
// myframe
window.onmessage = function(event){
event.data[1] instanceof Array // -> true
event.data[2] instanceof RegExp // -> true
}
log(2, $);
— конечно же $ будет не определён в скупе. Что бы пользоваться $ версией 1.8.3 нужно дождаться onload. var obj = {
level1: _.extend(function() {}, {
sub: 2
})
}
__webView->page()->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled, true);
QWebInspector inspector;
inspector.setPage(__webView->page());
inspector.setVisible(true);
calenderTrasform
) и присваиваете margin-left / width
в одном и том же event tick
. И грубо говоря, ваш новый html приходит в live DOM уже с margin-left / width — то есть, браузер не фиксирует эти изменения, поэтому и не вызывается transition. А используя setTimeout, вы переносите присваивание margin-left / width в следующий тик в event loop — и после того, как ваша функция «клик» отработает, браузер между делом «познакомится» с новыми нодами в доме, и когда функция по таймеру изменит margin-left, браузер это зафиксирует и запустит transition. И таймер в данном случае является оптимальным решением — a без нужно браузер заставить пересчитать стили:// ...
$('.calendarBody').html('<div id="calendarTransform">'+content+'</div>');
var $transform = $('#calendarTransform'),
styles = getComputedStyle($transform[0]);
styles['margin-left'];
styles['width'];
$transform.css({'margin-left': -step, 'width': step*2})}, 1);
flow / steps / stack
. А дальше как вариант — контролу присваиваете индекс (или шаг), а обработчик проверяет, если индекс контрола совпадает с текущем на стеке — проверяем и если правильно добавляем в стек, и тем самым переходом на след. индекс/шаг. var model1 = (new require('./test/model1'))();
self == model1 == model2 == global
var module = new (require('module'))();
// екзотические варианты -
var module = new require('module').prototype.constructor();
var module = new new require('module')();
Object.keys(obj).filter(function(x){ return !~obj[x].indexOf(7); })
$ npm install includejs -g
$ ijs import -files myfile.js -output done.js
# или так, все файлы в дериктории:
$ ijs import -files builds/*.js -output lib/
JSON.isOfPattern = function(json, props){
if (json == null) return false;
for(var key in props){
if (key in json == false) return false;
if (typeof props == 'object' && !JSON.isOfPattern(json[key],props[key])) return false;
}
return true;
}
var json = { name: 'A', address: { city: 'Berlin'}};
JSON.isOfPattern(json, {name:null, address: {city: null} });
visit site1.com
go site2.com
javascript: window.location.replace('?q=1')
go back // пользователь на site1.com