CSS ファイルが読み込まれたかどうかを判断するには、各ブラウザのメソッドが大きく異なります。今回は、IE ブラウザは、onload メソッドを直接使用して、CSS が読み込まれた後の処理を処理できます。 >
function styleOnload へのコードの抜粋(node, callback ) {
// IE6-9 および Opera の場合
if (node.attachEvent) {
node.attachEvent('onload', callback);
// 注意:
// 1 . "onload" はファイルが 404 の場合に IE6-9 で起動されますが、
// この状況では Opera は何もしないため、タイムアウトにフォールバックします。
// 2. "onerror"どのブラウザでも起動しません!
}
}
function poll(node, callback) {
if (callback.isCalled) {
return;
}
var isLoaded = false;
if ( /webkit/i .test(navigator.userAgent)) {//webkit
if (node['sheet']) {
isLoaded = true;
}
}
// for Firefox
else if (node['sheet']) {
try {
{> // ns_error_dom_security_err
if (ex.code === 1000) {
isloaded = true ;
}
🎜>}
{ // レンダリングする時間を与えます。
setTimeout(function() {
callback();
}, 1);
}
else {
setTimeout(function() {
ポーリング(ノード, コールバック);
}, 1);
}
}
setTimeout(function() {
ポーリング(ノード, コールバック);
}, 0);
SeaJS によって与えられる完全な処理は次のとおりです:
コードをコピー
function styleOnload(node, callback) {
// IE6-9 および Opera の場合
if (node.attachEvent) {
Node.attachEvent('onload', callback);
// 注意:
// 1. ファイルが 404 の場合、IE6-9 では「onload」が起動されますが、
// この状況では、Opera は何もしないため、タイムアウトにフォールバックします。
// 2. 「onerror」はどのブラウザでも起動しません!
}
// Firefox、Chrome、Safari のポーリング
else {
setTimeout(function() {
ポーリング(ノード、コールバック);
}, 0); // キャッシュ用
}
}
function poll(node, callback) {
if (callback.isCalled) {
return;
}
var isLoaded = false;
if (/webkit/i.test(navigator.userAgent)) {//webkit
if (node['sheet']) {
isLoaded = true;
}
}
// Firefox の場合
else if (node['sheet']) {
try {
if (node['sheet'].cssRules) {
isLoaded = true;
}
} catch (ex) {
// NS_ERROR_DOM_SECURITY_ERR
if (ex.code === 1000) {
isLoaded = true;
}
}
}
if (isLoaded) {
// レンダリングする時間を与えます。
setTimeout(function() {
callback();
}, 1);
}
else {
setTimeout(function() {
poll(node, callback);
}, 1);
}
}
// 我的アニメーション态创建関数LINK数
function createLink(cssURL,lnkId,charset,media){
var head = document.getElementsByTagName('head')[0],
linkTag = null;
if(!cssURL){
return false;
}
linkTag = document.createElement('link');
linkTag.setAttribute('id',(lnkId || 'dynamic-style'));
linkTag.setAttribute('rel','stylesheet');
linkTag.setAttribute('charset',(charset || 'utf-8'));
linkTag.setAttribute('media',(media||'all'));
linkTag.setAttribute('type','text/css');
linkTag.href = cssURL;
head.appendChild(linkTag);
}
functionloadcss(){
var styleNode = createLink('/wp-content/主題/BlueNight/style.css');
styleOnload(styleNode,function(){
alert("loaded");
});
}
在seajs的代码的候,我立刻想起了我看到ディエゴ・ペリーニ的另一个解法案:
/*
* Copyright (C) 2010 Diego Perini
* All Rights Reserved.
*
* cssready.js - CSS ロード済み/準備完了状態の通知
*
* 著者: Diego Perini
* バージョン: 0.1
* 作成日: 20100616
* リリース: 20101104
*
* ライセンス:
* http://www.jb51.net * ダウンロード:
* http://javascript.nwbox.com/cssready/cssready.js
*/
function cssReady(fn, link) {
var d = document,
t = d.createStyleSheet,
r = t ? 'rules' : 'cssRules',
s = t ? 'styleSheet' : 'sheet',
l = d.getElementsByTagName('link');
// 渡されたリンクまたは最後のリンク ノード
link || (link = l[l.length - 1]);
function check() {
try {
return link && link[s] && link[s][r] && link[s][ r][0];
} catch(e) {
return false;
}
}
(関数poll() {
check() && setTimeout(fn, 0) ) || setTimeout(poll, 100);
})();
}
また、jQuery の domready イベントが渡されたかどうかを判断するコードも原理は同様です。setTimeout 通知によって DOM のロードが完了したかどうかが判断されます。 CSS の形式には、#loadcssdom などの固定の形式が含まれており、loadcssdom の高さは 1px の形式になります。その後、DOM オブジェクトが作成され、このloadcssdom 形式が追加されます。その後、setTimeout がloadcssdoの高さが1pxを超えたかどうかを確認します。处理この方法の解決策、大家可以下《CSSP: JavaScript による CSS の読み込み – そして onload コールバックの取得。》
そして《JavaScript パターン》の作成者 Stoyan 在他的博客里,比较详细的说明了《いつスタイルシートは本当に読み込まれていますか?》。
これらを見て完了しました、おそらく感銘を受けます:汗、CSS が完全に追加されているかどうかを判断してください。今のところ真ではありません。これは簡単です!これは公開中のため、CSS の自動追加を除いて、更要动态追加JavaScript,动态追加HTML的操作,有空我也会写关链接的动态追加JavaScript的相关内容,不过在那之前,我建议你看看这これら:
《ensure – JavaScript/HTML/CSSを保証する必要に応じてオンデマンドでロードされます》、これは、HTML、CSS、JavaScript を自動的に追加する処理です。 JavaScript、HTML、CSS をオンデマンドで実行し、コードを実行します。 www.jb51.net は、関連する JavaScript と HTML スニペットがブラウザ DOM に存在することを確認してから、それらを使用するコードを実行します。
《JavaScript ができるだけ早く利用可能であることを CSS に伝えます》
見終わりましたら、可能です。就不会纠结: JavaScript が利用可能かどうかに応じて、見た目や動作が異なる Web ページの一部をスタイル設定しているとき。和学习有帮助!

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。

Quartzタイマーを使用してタスクをスケジュールする場合、Quartzでタスク通知を事前に送信する方法、タスクの実行時間はCron式によって設定されます。今...

JavaScriptプログラミング、プロトタイプチェーンの関数パラメーターの理解と操作のJavaScriptのプロトタイプチェーンの関数のパラメーターを取得する方法は、一般的で重要なタスクです...

WeChatアプレットWeb-ViewでVue.jsを使用する動的スタイルの変位障害がvue.jsを使用している理由の分析...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

ホットトピック



