2014-01-08 5 views
6

MVCにスタイルシートのCDNフォールバックを指定する方法が組み込まれていますか?私はjQuery Mobile Structureスタイルシートのフォールバックを設定しようとしています。スタイルバンドルのMVC CDNフォールバック

var JQMstyleSheet = new StyleBundle("~/JQMstyle", "http://code.jquery.com/mobile/1.3.1/jquery.mobile.structure-1.3.1.min.css").Include("~/theme/jquery.mobile.structure-1.3.1.css"); 
JQMstyleSheet.CdnFallbackExpression = "window.jQuery.mobile"; 
bundles.Add(JQMstyleSheet); 

ページでは、それはHTMLに、この出力レンダリング: ここRegisterBundles方法で私のコードがある

<script> 
(window.jQuery.mobile)||document.write('<script src="/JQMstyle"><\/script>'); 
</script> 

CDNは、動的にそれのようにスタイルシートを追加しません、それを失敗した

私のjavascriptファイルのために完全になります。 私は問題は、それがスタイルでなければならないときにスクリプトをレンダリングしようとしていることだと思います。 CdnFallbackExpression以外のフォールバックプロパティがありますか? UPDATE

System.Web.Optimization.StyleBundleについては、Microsoftのドキュメントは、しかし、それは言う説明では、利用可能なプロパティとしてCdnFallbackExpressionを示し、「Scriptsヘルパークラスによってレンダリングスクリプトの拡張子を取得します...」 http://msdn.microsoft.com/en-us/library/system.web.optimization.stylebundle(v=vs.110).aspx

は、このバグですSystem.Web.Optimization.StyleBundleにありますか?ヘルパークラスStylesを参照してそのプロパティを使用すべきではありませんか?

+0

'JQMstyleSheet.CdnFallbackExpression =" window.jQuery.mobile ";'なぜこれを置くのですか? – Amila

+0

cdnが失敗した場合、読み込むスタイルシートが必要です。 jqueryモバイルのcdnダウンロードが失敗した場合は、window.jQuery.mobileのチェックが表示されます。次に、スタイルシートcdnのダウンロードが失敗した可能性が最も高いことがわかります。私は、CdnFallbackExpressionを使ってスタイルシートが存在するかどうかを確認する方法がわかりません。 – Adrian

答えて

10

TLDR;

問題を解決するためにStyleBundle拡張メソッドを提供する私のソリューションをチェックしてください。

Style Bundle Fallback

また

はいマイクロソフトASP.NET最適化フレームワークにバグがあり、hereを文書化。

解決策は、CdnFallbackExpressionをjavascript関数に変更して、スタイルシートをチェックしてフォールバックをロードすることで、最適化フレームワークの悪いスクリプトを無視することです。

いくつかのトリッキーな部分があります。特に、ほとんどのCDNソースのように、別のドメインのスタイルシートが読み込まれているかどうかを確認してください。

問題がフレームワークで修正されるまで、私はGitHubのソリューションを利用できます。しかし、私はまだスタイルシートが実際にロードされたかどうかを判断するのが難しい部分について注意しています。

関連する問題