Как загрузить файлы CSS с помощью JavaScript?

Для отладки при запуске java добавьте, как указано:

-Djavax.net.debug=ssl

, после чего вы можете увидеть, что браузер пытался использовать TLSv1, а Jetty 9.1.3 говорил TLSv1.2, чтобы они не обменивались данными. Это Firefox. Chrome хотел SSLv3, поэтому я добавил это также.

sslContextFactory.setIncludeProtocols( "TLSv1", "SSLv3" );  <-- Fix
sslContextFactory.setRenegotiationAllowed(true);   <-- added don't know if helps anything.

Я не использовал большинство других вещей, которые сделал плакат оригинала:

// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] {

или этот ответ:

KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory
        .getDefaultAlgorithm());

или

.setEnabledCipherSuites

Я создал один самоподписанный сертификат следующим образом: (но я добавил .jks к имени файла) и прочитал это в моем java-коде Jetty. http://www.eclipse.org/jetty/documentation/current/configuring-ssl.html

keytool -keystore keystore.jks -alias jetty -genkey -keyalg RSA     

first & amp; lastname * .mywebdomain.com

293
задан Click Upvote 22 February 2009 в 13:48
поделиться

4 ответа

Вот "старый школьный" способ сделать его, который, надо надеяться, работает через все браузеры. В теории Вы использовали бы setAttribute, к сожалению, IE6 последовательно не поддерживает ее.

var cssId = 'myCss';  // you could encode the css path itself to generate id..
if (!document.getElementById(cssId))
{
    var head  = document.getElementsByTagName('head')[0];
    var link  = document.createElement('link');
    link.id   = cssId;
    link.rel  = 'stylesheet';
    link.type = 'text/css';
    link.href = 'http://website.com/css/stylesheet.css';
    link.media = 'all';
    head.appendChild(link);
}

Этот пример проверяет, был ли CSS уже добавлен так, он добавляет его только однажды.

Помещенный, что код в файл JavaScript, имейте конечного пользователя, просто включают JavaScript и удостоверяются, что путь CSS является полным, таким образом, он загружается из Ваших серверов.

VanillaJS

Здесь является примером, который использует плоскость JavaScript для введения ссылки CSS в head элемент на основе части имени файла URL:

<script type="text/javascript">
var file = location.pathname.split( "/" ).pop();

var link = document.createElement( "link" );
link.href = file.substr( 0, file.lastIndexOf( "." ) ) + ".css";
link.type = "text/css";
link.rel = "stylesheet";
link.media = "screen,print";

document.getElementsByTagName( "head" )[0].appendChild( link );
</script>

Вводят код непосредственно перед закрытием head, тег и CSS будут загружены, прежде чем страница представляется. Используя внешний JavaScript (.js) файл заставит Flash нестилизованного содержания ( FOUC) появляться.

389
ответ дан card100 4 November 2019 в 11:13
поделиться

Можно использовать для этого библиотека YUI или использовать этот статья для реализации

2
ответ дан zihotki 4 November 2019 в 11:13
поделиться

Библиотека YUI могла бы быть тем, что Вы ищете. Это также поддерживает перекрестную доменную загрузку.

при использовании jQuery, , этот плагин делает то же самое.

3
ответ дан anand.trex 4 November 2019 в 11:13
поделиться

Я предполагаю что-то вроде этого, что сценарий сделал бы:

<script type="text/javascript" src="/js/styles.js"></script>

Этот файл JS содержит следующее утверждение:

if (!document.getElementById) document.write('<link rel="stylesheet" type="text/css" href="/css/versions4.css">');

адрес JavaScript и CSS должен был бы быть абсолютным, если они должны обратиться к Вашему сайту.

Много методов импорта CSS обсуждены в этом , "Говорят "нет" взломам CSS с переходящими методами" статья.

, Но "Используя JavaScript для динамичного добавления таблиц стилей Portlet CSS" статья упоминает также возможность CreateStyleSheet (собственный метод для IE):

<script type="text/javascript">
//<![CDATA[
if(document.createStyleSheet) {
  document.createStyleSheet('http://server/stylesheet.css');
}
else {
  var styles = "@import url(' http://server/stylesheet.css ');";
  var newSS=document.createElement('link');
  newSS.rel='stylesheet';
  newSS.href='data:text/css,'+escape(styles);
  document.getElementsByTagName("head")[0].appendChild(newSS);
}
//]]>
49
ответ дан VonC 4 November 2019 в 11:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: