SharePointCommunity
Die deutschsprachige Community für SharePoint, Microsoft 365, Teams, Yammer und mit Azure

Sponsored by

Willkommen im Forum Archiv.
Einträge sind hier nicht mehr möglich, aber der Bestand von 12 Jahren SharePoint-Wissen ist hier recherchierbar.




Mit Ribbon drucken JavaScript sp.js

Unbeantwortet Dieser Beitrag hat 10 Antworten

Ohne Rang
7 Beiträge
Mbauer erstellt 7 Mai 2013 08:50
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

ich sitze gerade vor einem Problem. Und zwar habe ich eine Dokumentbibliothek, dort habe ich ein "Ribbon Button" mit dem SP Designer 2010 erstellt. Dieses Ribbon ist mit einer HTML Datei verlinkt welche eine JavaScript Datei aufruft, diese wiederrum öffnet den Druckdialog für die ausgewählte Datei aus der Bibliothek.

Das Problem ist das die sp.js vermutlich nicht gefunden wird.

Hier mal mein Code:

function printFile() {
    try{
        //throws error
        ExecuteOrDelayUntilScriptLoaded(start, "sp.js");
    }catch(e){
        alert(e.message);
    }
}

function start() {
    var ctx = SP.ClientContext.get_current();
    var items = SP.ListOperation.Selection.getSelectedItems(ctx);
    var selectedItem = '';
    var itemURL;
    for (index in items) {
        //only for testing
        alert(items[index].id);
        alert(items[index].displayName);
        printDocument(items[index].file);
    }
}

Ich erhalte den folgenden Fehler:

Der Wert der Eigenschaft "ExecuteOrDelayUntilScriptLoaded" ist Null oder undefiniert, kein Function-Objekt

Kennt jemand die Lösung des Problems?

Alle Antworten

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Mai 2013 08:54
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

ExecuteOrDelay... sucht nicht nach der Datei, sondern wartet einfach bis sie geladen ist. Du mußt aber selbst dafür sorgen, daß sie überhaupt eingebunden ist. Füge dazu einfach im <head> der HTML-Datei einen Link ein:

<script type="text/javascript" src="/_layouts/1031/sp.js"></script>

Übrigens brauchst Du auch noch die sp.runtime.js ;-)

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
7 Beiträge
Mbauer Als Antwort am 7 Mai 2013 09:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich hab das mal in meine Html (wird später noch überarbeitet wenn's läuft) eingebaut:

<html>
<head>
    <title>test druck</title>
    <script type="text/javascript" src="/_layouts/1031/sp.js"></script>
    <script type="text/javascript" src="/_layouts/1031/sp.runtime.js"></script>
    <script type="text/javascript" src="printFile.js"></script>
</head>
<body>
     <button onclick="printFile()">Markierte Dateien ausdrucken</button>
</body>
</html>

Ich bekomme aber immer noch den selben Fehler.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Mai 2013 10:12
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn ich mich richtig erinnere, muß man die sp.runtime.js zuerst einbinden, also vor sp.js

Und wo liegt die HTML-Datei? Sind die js-Dateien von dort über den relativen Pfad erreichbar? Sonst versuche mal den absoluten Pfad, also sowas wie http://sharepoint/_layouts/...

Und das ExecuteOrDelay... brauchst Du in diesem Fall gar nicht.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Mai 2013 10:14
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Und nochwas: SP.ClientContext.get_current() liefert nur einen verwendbaren Kontext, wenn es innerhalb einer SharePoint Website ausgeführt wird. Ob das in einer eigenen HTML-Seite überhaupt geht, weiß ich nicht.

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
7 Beiträge
Mbauer Als Antwort am 7 Mai 2013 10:42
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich habe jetzt die HTML in einen CEWP eingefügt. so geht zumindest mal der Zugriff auf die Elemente. Aber eigentlich möchte ich den Druckprozess über ein Ribbon starten. lässt sich das irgendwie mittels JavaScript lösen?

Zur Info: Ich habe leider nur VS 2012 Web Express zur Verfügung und keinen direkten Zugriff auf den Server.

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Mai 2013 11:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Du solltest hinter den Button zumindest eine aspx legen, die die Standardmasterpage verwendet und Dein Script dort einfügen, dann funktioniert das auch alles.

Normalerweise würde man dafür eine eigene Application Page erstellen (was bei diesen Bedingungen nicht geht), aber Du kannst auch einfach irgendwo anders eine Seite erstellen (im Browser oder mit SharePoint Designer).

Viele Grüße
Andi
af @ evocom de
Blog
Ohne Rang
7 Beiträge
Mbauer Als Antwort am 7 Mai 2013 12:07
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Alles klar, danke das werde ich mal ausprobieren.

Ohne Rang
22 Beiträge
Karsten Pohnke Als Antwort am 7 Mai 2013 13:40
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Hallo,

falls Dir die Liste in der Druckansicht dann von der Schriftgröße zu klein ist, bei mir hat folgendes geholfen: http://www.ilikesharepoint.de/2013/05/sharepoint-2010-change-font-size-only-for-printing/

Grüße

Ohne Rang
7 Beiträge
Mbauer Als Antwort am 7 Mai 2013 15:44
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Ich möchte ja nicht die Liste drucken, sondern die selektierten Dokumente (bzw. für diese Dokumente den Druckdialog öffnen). Problem ist immernoch die Verlinkung mit der sp.js. Ich habe jetzt an den Ribbon Button ne aspx angehängt, aber wie füge ich da die Masterpage ein?

Ohne Rang
19231 Beiträge
Andi Fandrich Als Antwort am 7 Mai 2013 16:27
SchlechtSchlechtIn OrdnungIn OrdnungDurchschnittDurchschnittGutGutSehr gutSehr gut

Wenn Du die Seite im Browser oder SharePoint Designer erstellst, ist sie automatisch mit der masterpage verbunden.

Viele Grüße
Andi
af @ evocom de
Blog