ホームページ > 記事 > ウェブフロントエンド > laydate.css読み込み時のlaydate.jsのパスエラーについて詳しく解説
laydate.js は、Javascript シリーズに属する日付制御および時刻プラグインであり、IE6 を含む主流のブラウザーと互換性があります。 laydate.js が Xianxin によって大幅に書き直された後、ますます強力になり、より柔軟に使用できるようになりましたが、angular+ocLazyLoad に基づくプロジェクトで問題が発生しました。日時選択プラグインlaydate.jsは皆さんによく知られていると思いますが、この記事では主にlaydate.jsのlaydate.css読み込み時のパスエラーの問題を解決する方法に関する関連情報を紹介します。サンプルコードを通じて詳細に説明しています。これは誰にとっても非常に役立ち、勉強や仕事をする際に役立ちます。必要な方は以下を参照してください。
問題が見つかりました
laydate.jsがocLazyLoadの非同期読み込みによって導入されたため、パスエラーを確認したところ、次のように書かれていることがわかりました。これ:
getPath:function(){ var e=document.scripts, t=e[e.length-1], n=t.src; if(!t.getAttribute("merge")) return n.substring(0,n.lastIndexOf("/")+1) }()
最初にlaydate.jsへのパスを取得し、次にlaydate.cssのセクションを追加して、最終的に完全なパスに結合する必要があります。
laydate.js のパスを取得するために作者が使用したアイデアは次のとおりです。パスを決定するための js コードは通常、関数ではなく js ファイルに直接配置されるため、その中のステートメントは、次のときにすぐに実行されます。このステートメントがちょうど e.length-1 のときに取得される js ファイルの数は、ページの最後にある js ファイルがまだ読み込まれていないため、そこで取得される js ファイルの数になります。ページ上のすべての js ファイルの数ではありません。この方法では、ファイルを取得するためにパスをたどる必要がなく、ファイルの判定にファイル名が必要ないため、判定がより正確になります (e.length-1 は常にファイル自体です)。
ただし、この方法には欠点があります。 document.write("
次に、document.currentScript を考えました。これは 1 ステップで実行できますが、互換性の問題がいくつかあります。
var curSrc = document.currentScript.src; return curSrc.substring(0,curSrc.lastIndexOf("/")+1);
最終的に、私は次の単純かつ粗雑なメソッドを使用しました:
getPath:function(){ var e=document.scripts, n; for(var i=e.length;i>0;i--){ if(e[i-1].src.indexOf("laydate.js")>-1){ n=e[i-1].src.substring(0,e[i-1].src.lastIndexOf("/")+1); } } return n; }()このメソッドのアイデアは非常に明確です。ファイル名に基づいて判断して傍受するだけです。ただし、この方法には次の 2 つの欠点があります:
1. ページ上のすべての js ファイルを走査する必要があり、非効率である場合があります。 (私のページにはjsファイルがあまりありません(笑)
2. ページ内の異なるディレクトリに同じ名前のjsファイルがある場合、判定が間違っている可能性があります。
関連する推奨事項:
js time plug-in_html/css_WEB-ITnose
JS の置き換えと time plug-in_javascript スキルの併用
jQuery_jquery で実装された入力ボックス選択時間プラグインの使用例
以上がlaydate.css読み込み時のlaydate.jsのパスエラーについて詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。