Probleme beim Debuggen

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
MacPurschi
Beiträge: 43
Registriert: 11.10.2012, 09:44

Probleme beim Debuggen

Beitrag von MacPurschi » 17.04.2013, 09:39

Hallo zusammen,

ich bin gerade dabei ein von mir erstelltes Formular zu debuggen. Leider werde ich schon beim Öffnen des Formulars mit Fehlermeldungen begrüßt, mit denen ich so nichts anfangen kann und somit auch nicht weiß, wonach ich suchen soll. Ich hoffen, dass jemand von euch mir helfen kann.

Nach dem Öffnen sehen die Konsoleneinträge wie folgt aus:
Acrobat – Version mit integrierten EScript-Funktionen 11.0
Acrobat SOAP 11.0

TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
TypeError: oOriginalNode is null
49:1
Hat jemand einen Tipp, wonach ich schauen muss? :X

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Probleme beim Debuggen

Beitrag von radzmar » 17.04.2013, 13:44

Du hast irgendein Script laufen, das die Variable oOriginalNode in Zeile 49 Spalte 1 benutzt, die aber den Wert null hat und somit das Skript scheitern lässt.

MacPurschi
Beiträge: 43
Registriert: 11.10.2012, 09:44

Probleme beim Debuggen

Beitrag von MacPurschi » 17.04.2013, 13:52

Hallo Radzmar,

vielen Dank für die Info.

So kann ich mit der Meldung wenigstens halbwegs was anfangen.

Ich habe allerdings auch schon gemerkt, dass sich anscheinend durch viel Rumprobieren und ein Haufen Änderungen in diesem Formular anscheinend an verschiedensten Stelle alte Code-Schnipsel verblieben sind, die für den Terror sorgen. Ich bin gerade dabei das Formular noch einmal ganz frisch aufzusetzen. Erste Test haben ergeben, dass sich zumindest dieses Problem dadurch im Moment erledigt hat.

Ich schaue mal, wie weit ich mit meiner Aufräum-Aktion komme.

Vielen Dank soweit! :)

pgaston2
Beiträge: 1
Registriert: 28.05.2013, 20:13

Probleme beim Debuggen

Beitrag von pgaston2 » 28.05.2013, 20:16

(Sorry, no German)

I've been getting this same error message.   This happens to me when I dynamically add a row to a table using Javascript.    Luckily the program continues to run.

From what I can determine, this comes from code that Livecycle adds itself.    The specific code on line 49 is to remove a tooltip.    (Apparently they didn't test for my condition.)

Best - p

Benutzeravatar
radzmar
Beiträge: 962
Registriert: 26.10.2011, 10:18

Probleme beim Debuggen

Beitrag von radzmar » 03.06.2013, 08:10

Ich hab das Script mal überprüft, das Designer einfügt, um Pflichtfelder zu validieren.

Code: Alles auswählen

Formular1.#variables[0].ColorFieldsValidation - (JavaScript, client)
//+ GENERATED - DO NOT EDIT 
//+ Type: ColorFields
//+ MandatoryBorderColor: 16737843
//+ MandatoryBackColor: 16764057
//+ FailedBorderColor: 255
//+ FailedBackColor: 8421631
//+ Color: failed
function InitializeColorFields() {
	// Disable Acrobat's field highlighting. The Color
	// Failed Fields action takes care of highlighting fields.
	if (xfa.host.name == "Acrobat") {
		app.runtimeHighlight = false;
	}
}
function DoColorFields(oInvalidNode) {
	// If this form is running on a client other than Acrobat
	// (like on the server) then don't run this script
	if (xfa.host.name != "Acrobat") {
		return;
	}
	var sClassName = oInvalidNode.className;
	
	// Only color nodes that are <field>s or <exclGroup>s
	// Ignore everything else
	if ((sClassName != "field") && 
	    (sClassName != "exclGroup")) {
		return;
	}
	// If the node is a <field> that is a button or a barcode, then don't
	// do any color processing
	if (sClassName == "field") {
		var sUIClassName = oInvalidNode.ui.oneOfChild.className;
		
		if ((sUIClassName == "barcode") || 
		    (sUIClassName == "button")) {
			return;
		}
	}
	if (oInvalidNode.errorText == "") {
		// Validation Succeeded
		// Revert the appearance to its original state
		var oBorder = sClassName == "field" ? oInvalidNode.ui.oneOfChild.border : oInvalidNode.border;
		oBorder.parent.nodes.remove(oBorder);				
		// Remove the tool tip if it wasn?t originally specified
		var sSOM = oInvalidNode.somExpression;
		sSOM = sSOM.replace("xfa[0].form[0]", "xfa[0].template[0]");
		
		var oOriginalNode = xfa.resolveNode(sSOM);
		var oOriginalAssist = oOriginalNode.assist;
		
		if (!oOriginalAssist.isPropertySpecified("toolTip")) {
			var oToolTip = oInvalidNode.assist.toolTip;
			oInvalidNode.assist.nodes.remove(oToolTip);
		}
	}
	else {
		// Validation Failed
		// Show the invalid appearance
		var oFailedBorder = sClassName == "field" ? oInvalidNode.ui.oneOfChild.border : oInvalidNode.border;
		// Border color
		// Show a solid border with square corners
		var sBorderColor = "255, 0, 0";
		
		oFailedBorder.presence = "visible";
			
		for (var i = 0; i < 4; i++) {
			var oEdge = oFailedBorder.getElement("edge", i);
				
			oEdge.presence = "visible";
			oEdge.color.value = sBorderColor;
			oEdge.thickness = "2pt";
			oEdge.stroke = "solid";
				
			var oCorner = oFailedBorder.getElement("corner", i);
		
			oCorner.presence = "visible";
			oCorner.color.value = sBorderColor;
			oCorner.thickness = "2pt";
			oCorner.stroke = "solid";
			oCorner.join = "square";
			oCorner.inverted = "0";
			oCorner.radius = "0mm";
		}
 
		// Background color
		// Show a solid fill color
		oFailedBorder.fill.color.value = "255, 128, 128";
		// The presence of the border must be visible to show the fill.
		// Hide the edges when the invalid appearance doesn't include
		// changing the border color
		if (oFailedBorder.presence != "visible") {
			oFailedBorder.presence = "visible";
			oFailedBorder.edge.presence = "invisible";
		}
			
		// Replace the current fill type with a solid fill
		if (oFailedBorder.fill.oneOfChild.className != "solid") {
			var oFailedFillType = oFailedBorder.fill.oneOfChild;
			oFailedBorder.fill.nodes.remove(oFailedFillType);
				
			var oSolid = xfa.form.createNode("solid", "");			
			oFailedBorder.fill.nodes.append(oSolid);
		}
		// Tool Tip
		// If a tool tip isn't specified, populate the tool tip
		// with the validation message
		var oAssist = oInvalidNode.assist;
		
		if (!oAssist.isPropertySpecified("toolTip")) {
			var oFailedToolTip = xfa.form.createNode("toolTip");
			oAssist.nodes.append(oFailedToolTip);
			oAssist.toolTip.value = oInvalidNode.errorText;
		}
	}
}
//-
Was auffällt ist, dass in Zeile 46 die Variable sSOM von xfa.[0].form[0] auf xfa[0].template[0] geändert wird.
Da das Template ja statisch ist, und sich zur Laufzeit gar nicht verändern kann, hat man natürlich das Problem, dass bei sich wiederholenden Objekten im Template gar keine passende Instanz existiert.
Dadurch ist sSOM null. Da sSOM gleich dannach für die Variable oOriginalNode benutzt wird, die dann per resolveNode aufgelöst wird, scheitert das Ganze dann.

Wenn man diese Zeile auskommentiert oder löscht, funktioniert das Script auch mit sich wiederholenden Objekten.

Code: Alles auswählen

sSOM = sSOM.replace("xfa[0].form[0]", "xfa[0].template[0]");

Andreas H.
Beiträge: 533
Registriert: 14.04.2015, 11:10

Probleme beim Debuggen

Beitrag von Andreas H. » 26.12.2015, 17:49

Hallo radzmar,

seit dem letzen Eintrag zu dem Thema, ist hier schon etwas Zeit vergangen.

Als ich über Variablen eine Variable erstellt habe, hat der LCD dieses Script (Validieren der Pflichtfelder - von Dir hier am: 3 Jun 2013 beschrieben) hinzugefügt.

Ich bin etwas ratlos (?) warum das Script automatisch eingefügt wird. Es funktioniert auch nicht ohne Rückmeldung beim Debuggen.

Hast Du bitte eine Erklärung für mich?

Fehler beim Debuggen:

Code: Alles auswählen

TypeError: oOriginalNode is null
49:Doc:Init

oder

TypeError: oOriginalNode is null
49:1
(Kann es evtl. bedenkenlos gelöscht werden unter bestimmten Voraussetzungen?)


Gruß
Andreas

Antworten