...
Допустим, при взаимодействии с насыщенным интернет-приложением (в терминологии ARIA такие приложения именуются активными) пользователь не просматривает страницу, а прослушивает ее с использованием экранного диктора. При этом программа зачитывает вслух одну часть страницы, а тем временем другая ее часть динамически обновляется. Живые области ARIA подсказывают пользователю, что обновилась часть страницы — та, которая в данный момент находится не в фокусе ...
...
Существуют атрибуты состояния ariadisabled, aria-busy, aria-expanded, aria-hidden и атрибуты свойств, в частности ariadescribedby, aria-haspopup и aria-labelledby, предоставляющие дополнительную информацию о переопределенных элементах. На практике рекомендуется макси-
мально полагаться на семантические элементы, но если вам непременно требуется использовать конкретный элемент (допустим, древовидное меню) «не по назначению» — прибегайте к ARIA-атрибутам. ...
declare namespace ymaps {
export function ready(): Promise;
class Promise {
then(onFulfilled?: Function, onRejected?: Function, onProgress?: Function, ctx?: any): Promise;
}
export class Map {
constructor(element: string | any, state: MapState);
}
export class MapState {
center: number[];
controls: string[];
zoom: number;
}
}
/// <reference path="ymaps.d.ts" />
...
ymaps.ready().then(() => {
let myMap = new ymaps.Map("main_map", {
center: [50.450100, 30.523400],
zoom: 12,
controls: ['smallMapDefaultSet']
});
});
declare var ymaps: any;
window.onerror = function(err, url, line, col, msg) {
var data = {
'Error': err,
'URL': url,
'Line': line,
'Column': null,
'Message': null,
'Browser': null,
'OS': null,
'Device': null
};
// HTML5 only
data['Column'] = !col ? '' : col;
data['Message'] = !msg ? '' : msg;
try {
var ua = detect.parse(navigator.userAgent);
data['Browser'] = !ua.browser.name ? '' : ua.browser.name;
data['OS'] = !ua.os.name ? '' : ua.os.name;
data['Device'] = !ua.device.name ? '' : ua.device.name;
}
catch(e) {}
console.groupCollapsed('Error: ' + data['Error']);
console.log('URL: ' + data['URL']);
console.log('Line: ' + data['Line']);
if(data['Column'])
console.log('Column: ' + data['Column']);
if(data['Message'])
console.log('Message: ' + data['Message']);
console.groupEnd();
try {
$.post('/frontend/error/', data);
}
catch(e) {}
return true; //suppressErrorAlert
};
<div ng-app>
<table ng-controller="buyCtrl">
<tr ng-repeat="product in products" ng-mouseover="productHovered($index)">
<td >{{product.name}}</td>
<td class="buy">{{product.count}}/10</td>
<td><a ng-class="product.buttonCss">Купить</a></td>
</tr>
</table>
</div>
.red{
color:red;
}
.green{
color:green;
}
function buyCtrl($scope) {
$scope.products = [
{name:'Помидоры', count:1, buttonCss:"green"},
{name:'Огурцы', count:0, buttonCss:"green"},
{name:'Картофель', count:0, buttonCss:"green"}
];
$scope.productHovered = function(selectedProductIndex){
$scope.products.forEach(function(product){
product.buttonCss = "green";
});
$scope.products[selectedProductIndex].buttonCss = "red";
}
}
1) Компьютеры подключены к интернету через роутер.
2)по wi-fi
3)Сетевая папка будет на одном компьютере
<ul id="menu-topen-1" class="menu">
<li class="menu-item"><a href="/#some_anchor">Solutions</a></li>
<li class="menu-item"><a href="/about/#team">Team</a></li>
<li class="menu-item"><a href="/blog.php#myblog">Blog</a></li>
<li class="menu-item"><a href="/contacts.html#headline">Contact</a></li>
</ul>
а воспользоваться последним не получится, потому что тут уже требуется .NET 4 и выше.