Ich bekomme eine Menge Fehler bei der Verwendung von SquishIt in meiner MVC3-Anwendung mit JQuery-Plugins von Drittanbietern. Wenn ich die ForceDebug-Methode für den Bundle-Befehl auf meinem Entwicklungscomputer einstelle, funktioniert alles einwandfrei und der JS wird normal verarbeitet. Wenn ich jedoch die Methode ForceRelease (vor dem Rollout in die Produktion) einstelle, zeigt FireFox beim Aufrufen der Website "Fehler" an, dass es sich nicht um eine Funktion handelt. Ich habe versucht, compilation debug="true"
in der web.config ohne Verbesserung einzustellen.SquishIt ForceRelease in MVC3 nicht ordnungsgemäß JQuery Plugins
Hier sind die JS-Aufrufe in meiner _layout.cshtml-Datei. Alle Bündelung ist für Standard-JQuery Plugins:
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/mvc/3.0/jquery.validate.unobtrusive.min.js"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-ui-1.8.18.custom.min.js")"></script>
@(Bundle.JavaScript()
.Add("~/Scripts/modernizr-2.5.3.js")
.Add("~/Scripts/jquery.fileinput.js")
.Add("~/Scripts/jquery.numeric.js")
.Add("~/Scripts/jquery.maskedinput-1.3.min.js")
.Add("~/Scripts/jquery.maxlength_countdown.js")
.Add("~/Scripts/jquery.qtip.min.js")
.Add("~/Scripts/jquery.pnotify-1.1.0.min.js")
.Add("~/Scripts/fileuploader.js")
.Add("~/Scripts/jquery.dropdownchecklist-1.4.js")
.Add("~/Scripts/jquery.blockUI.js")
.Add("~/Scripts/jquery.textarearesizer.min.js")
.ForceRelease()
.MvcRender("~/CompiledContent/combined_#.js")
)
Hier ist ein Beispiel von Fehler, die FireFox-Displays ist. Diese Änderungen basieren auf, was ich in dem Bündel enthalten haben:
function (n) {var i = (n.browser.msie ? "paste" : "input") + ".mask", t = window.orientation != undefined;n.mask = {definitions: {9: "[0-9]", a: "[A-Za-z]", '*': "[A-Za-z0-9]"}, dataName: "rawMaskFn"}, n.fn.extend({caret: function (n, t) {if (this.length != 0) {if (typeof n == "number") {return t = typeof t == "number" ? t : n, this.each(function()
... bla bla YADDA - weitere 50 Zeilen Skript hier ... function() {setTimeout(i, 0);})();}).bind("blur.mask", function() {v(), c.val() != p && c.change();}).bind("keydown.mask", nt).bind("keypress.mask", d).bind(i, function() {setTimeout(function() {c.caret(v(true));}, 0);}), v();});}});}(jQuery) is not a function
$(".dropdown-checklist").dropdownchecklist is not a function
Irgendwelche Gedanken auf, was Ich könnte hier versaut haben?
Sie rocken Mark! Das hat mich in die richtige Richtung gelenkt. Für andere habe ich herausgefunden, dass 'jquery-numeric.js' einige nicht abgeschlossene Funktionen hatte und dass' jquery-maskedinput-1.3' nach '} (jQuery)) kein abschließendes Semikolon hatte;). Danke noch einmal! – bigmac
Ich hatte genau das gleiche Problem. Eine Javascript-Datei von Drittanbietern, die nicht mit einem Semikolon endete. Ich werde jeden anderen etwas googeln, so fügen Sie einen Null-Minifier hinzu: .WithMinifier (new SquishIt.Framework.Minifiers.JavaScript.NullMinifier()) – Arbiter