Type.GetNestedTypes () вернет общедоступные вложенные типы указанного типа.
Если вам также нужны частные и внутренние вложенные типы, вы должны вызвать Type.GetNestedTypes (BindingFlags bindingFlags) метод, подобный этому:
Type[] nestedTypes = typeof(MyType).GetNestedTypes(BindingFlags.Static |
BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.NonPublic);
Если у вас есть строгая политика безопасности содержимого, которая не позволяет @ vladimir-salguero ответить , вы можете использовать это (обратите внимание на сценарий nonce
):
<script nonce="(your nonce)" async>
$(document).ready(function() {
$('link[media="none"]').each(function(a, t) {
var n = $(this).attr("data-async"),
i = $(this);
void 0 !== n && !1 !== n && ("true" == n || n) && i.attr("media", "all")
})
});
</script>
Просто добавьте следующее в ссылку на таблицу стилей: media="none" data-async="true"
. Вот пример:
<link rel="stylesheet" href="../path/script.js" media="none" data-async="true" />
Пример для jQuery:
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" type="text/css" media="none" data-async="true" crossorigin="anonymous" /><noscript><link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css" type="text/css" /></noscript>
Теперь вы можете использовать preload
ключевое слово для элементов link
.
Версия синхронизации:
<link href="style.css" rel="stylesheet">
Версия Async:
<link href="style.css" rel="preload" as="style">
Эта функция совсем недавно стала широко поддерживаемой среди современных браузеров. Если вам нужны резервные копии для старых браузеров, используйте loadCSS .
Эта функция была отключена по умолчанию в Firefox. Пока Firefox не реализует решение, loadCSS (упомянутый выше), скорее всего, ваш лучший выбор. Комментарий ниже, взятый из этого обсуждения :
Мы решили пойти с другим подходом для rel = preload. Я не знаю, когда это будет реализовано.
вы можете попытаться получить его разными способами:
1.Использование media="bogus"
и <link>
у подножия
<head>
<!-- unimportant nonsense -->
<link rel="stylesheet" href="style.css" media="bogus">
</head>
<body>
<!-- other unimportant nonsense, such as content -->
<link rel="stylesheet" href="style.css">
</body>
2. Включение DOM по-старому
<script type="text/javascript">
(function(){
var bsa = document.createElement('script');
bsa.type = 'text/javascript';
bsa.async = true;
bsa.src = 'https://s3.buysellads.com/ac/bsa.js';
(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa);
})();
</script>
3.если вы можете попробовать плагины, вы можете попробовать loadCSS
<script>
// include loadCSS here...
function loadCSS( href, before, media ){ ... }
// load a file
loadCSS( "path/to/mystylesheet.css" );
</script>
<script>
на <style rel=stylesheet>
? (Просто любопытно. Вместо этого я буду использовать loadCSS
(т. Е. Ваш пример 3), если мне нужно загрузить CSS позже.)
– KajMagnus
4 September 2017 в 14:36
Пожалуйста, позаботьтесь о том, чтобы обновить ответ, поскольку все вышеперечисленное не позволяет произвести впечатление на страницы google pagespeed.
Согласно Google , вы должны реализовать асинхронную загрузку Css
< noscript id="deferred-styles" >
< link rel="stylesheet" type="text/css" href="small.css"/ >
< /noscript >
<script>
var loadDeferredStyles = function() {
var addStylesNode = document.getElementById("deferred-styles");
var replacement = document.createElement("div");
replacement.innerHTML = addStylesNode.textContent;
document.body.appendChild(replacement)
addStylesNode.parentElement.removeChild(addStylesNode);
};
var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame ||
window.webkitRequestAnimationFrame || window.msRequestAnimationFrame;
if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); });
else window.addEventListener('load', loadDeferredStyles);
</script>
Уловкой запуска асинхронной загрузки стилей является использование элемента <link>
и установка недопустимого значения для медиа-атрибута (я использую media = "none", но любое значение будет делать). Когда медиа-запрос оценивается как false, браузер все равно будет загружать таблицу стилей, но он не будет ждать, пока контент будет доступен до отображения страницы.
<link rel="stylesheet" href="css.css" media="none">
После того, как таблица стилей закончила загрузку media должен быть установлен в допустимое значение, поэтому правила стиля будут применены к документу. Событие onload используется для переключения свойства media на все:
<link rel="stylesheet" href="css.css" media="none" onload="if(media!='all')media='all'">
Этот метод загрузки CSS будет доставлять полезный контент посетителям намного быстрее, чем стандартный подход. Критический CSS все еще может быть использован с обычным блокирующим подходом (или вы можете встроить его для достижения максимальной производительности), а некритические стили могут быть постепенно загружены и применены позже в процессе синтаксического анализа / рендеринга.
Этот метод использует JavaScript, но вы можете обслуживать не-JavaScript-браузеры, обертывая эквивалентные блокирующие элементы <link>
в элементе <noscript>
:
<link rel="stylesheet" href="css.css" media="none" onload="if(media!='all')media='all'"><noscript><link rel="stylesheet" href="css.css"></noscript>
Вы можете увидеть операцию в www.itcha. edu.sv
Источник в http://keithclark.co.uk/
Функция ниже создаст и добавит в документ все таблицы стилей, которые вы хотите загрузить асинхронно. (Но, благодаря Event Listener
, он будет делать это только после того, как будут загружены другие ресурсы окна.)
См. Следующее:
function loadAsyncStyleSheets() {
var asyncStyleSheets = [
'/stylesheets/async-stylesheet-1.css',
'/stylesheets/async-stylesheet-2.css'
];
for (var i = 0; i < asyncStyleSheets.length; i++) {
var link = document.createElement('link');
var rel = document.createAttribute('rel');
var href = document.createAttribute('href');
link.setAttributeNode('rel', 'stylesheet');
link.setAttributeNode('href', asyncStyleSheets[i]);
document.head.appendChild(link);
}
}
window.addEventListener('load', loadAsyncStyleSheets, false);
var newStyle = document.createElement("link"); newStyle.rel = "stylesheet"; newStyle.href = "stylesheet.css"; document.getElementsByTagName("head")[0].appendChild(newStyle);
внутри тега <script>
в теле страницы отлично работает - даже в старых браузерах, таких как MSIE8.
– TecMan
23 April 2018 в 13:22