2016-04-18 3 views
1

Ich verwende printThis.js Laden gefunden hereprintThis.js CSS-Datei nicht

Es hat die Fähigkeit, eine externe CSS-Datei aufzurufen, die ich tue. Das Problem, auf das ich stoße, ist, dass das CSS beim ersten Aufruf der Funktion niemals geladen wird und der Ausdruck seine Stile nicht enthält. Das zweite Mal wird es normalerweise funktionieren, was mich denken lässt, dass die CSS-Datei vorab geladen werden muss.

Ich habe versucht, eine versteckte Iframe mit einer Scratch-Seite, die das CSS lädt, aber das funktioniert nicht. Ich könnte es dynamisch auf der aktuellen Seite laden, aber überlappende Einstellungen für Elemente wie Körper werden durcheinander gebracht.

Hier ist der jQuery-Code:

$("#printDiv").printThis({ 
    debug: false,    
    importCSS: false,   
    importStyle: false,   
    printContainer: true,  
    loadCSS: "css/specialCSS.css", 
    pageTitle: "the page title",  
    removeInline: false,  
    printDelay: 0,   
    header: null,    
    formValues: false   
});     

$("#print").html("Print"); 

Gibt es eine Möglichkeit, den Stecker zu zwingen, in der CSS-vorzuladen?

+0

Wie fügen Sie die Datei printThis.js ein? ist es eine lokale Kopie oder ein CDN ... funktioniert loadCSS tatsächlich aus dem Verzeichnis, in dem Sie sich für Ihre Seite befinden oder sollten Sie das mit /css/specialCSS.css voranstellen Bitte geben Sie weitere Details an – bretterer

+0

Ich habe eine lokale Kopie der js-Datei dass ich in die HTML-Seitenkopfzeile einbeziehe. Ich bin ziemlich sicher, dass die relativen Pfade alle korrekt sind, da der Druck beim zweiten Mal funktioniert. Ich würde denken, wenn der Weg falsch wäre, würde es nie funktionieren. – Shawn

+0

Konnten Sie dieses Problem lösen? – Razvi

Antwort

1

Ich bin gerade in dieses Problem geraten. hier ist der Code i wurde mit:

$('selector').printThis({ 
      loadCSS: "/app/css/printListTable.css", 
      header:'<h1>'+$pageTitle+' Table Report</h1>' 
     }); 

, wenn ich zum ersten Mal auf die Schaltfläche geklickt wurde das Stylesheet nicht geladen, so mein Druck css nicht geladen wurde. als ich erneut auf die action-taste geklickt habe, wurde der style wie erwartet angezeigt. Mir fehlte eine Schlüsselsyntax von importCSS:true, von der ich annehme, dass sie die Datei für mich vorlädt. so mein aktualisierten Code wäre:

$('selector').printThis({ 
       importCSS: true, 
       importStyle: true,//thrown in for extra measure 
       loadCSS: "/app/css/printListTable.css", 
       header:'<h1>'+$pageTitle+' Table Report</h1>' 
      }); 

versucht, diese CSS über eine iframe zu vorzuladen wäre ein Albtraum und gegen die Grundlagen dieses Plug-in gehen würde.

+0

Ich bin nicht in der Lage, mein Problem mit dieser Lösung zu lösen. Ich bekomme immer noch den gleichen Fehler. Irgendwelche Eingaben? – Razvi

1

Sie könnten versuchen, einfach den load CSS Aufruf zu einer anderen Funktion zu verschieben, die auf der Seite höher heißt (denken Sie daran: der Browser liest die Seite von oben nach unten, es ist genauso intuitiv wie es scheint). Sie können den Anruf auch in einem unsichtbaren <span> am oberen Rand der Seite laden.

Nur der Vollständigkeit halber, yes, you can preload CSS without using a hidden iFrame.

+0

Benutzer fehlt Schlüsselsyntax, um dieses Problem zu beheben. Sieh meine Antwort. meine Antwort sollte bitte die aktualisierte, genehmigte Antwort sein. – HollerTrain