Ich muss ein Webformular automatisieren, das iframes verwendet, um untergeordnete Formulare einzubetten, die als separate HTML-Seiten betrachtet werden können.Instanz des untergeordneten Objekts in iframe abrufen
So erhalten Sie ein übergeordnetes Dokument, das enthält, was sie Sichtfelder nennen, die Iframes sind. Innerhalb der Iframes befinden sich die "Kind" eingebetteten Webseiten.
Ein einfaches Beispiel:
Ich habe viel von der html ausschneiden es auf eine vernünftige Größe
<html>
<body>
<div id="123" arid=123 artype="View" ardbn="vfMyChild"
class="arfid123 ardbnvfMyChild"
STYLE="top:49 left:75 width:1038 height:322" arvfframe="<iframe style="top:0 left:0 width:1038; height:322" name="VF123" title="View Field" src="javascript:&quot;&lt;HTML&gt;&lt;/HTML&gt;&quot;" >
</iframe>">
</div>
</body>
</html>
Dann wird der eingebettete zu reduzieren Kind HTML könnte einfach so sein:
<html>
<body>
<div id="321" arid=321 artype="Char" ardbn="txtRegister">
<label id="label321" class="label f6">Register:</label>
<textarea id="arid_321" cols="20" maxlen=255 rows=1></textarea>
</div>
</body>
</html>
Das HTML in der STYLE = sieht ein bisschen seltsam - nicht sicher, warum es so ist. Aber ich kann sehen, dass es eine Art Iframe ist.
Ich habe eine Instanz des Top-Level-Dokumentobjekts und ich habe eine Instanz des Div mit ID = 123. Ich muss das Textarea-Objekt im Kind automatisieren. Ich habe folgendes versucht, was nicht funktioniert hat.
var viewfields; //is a ref to the div with id=123
if(viewfields) {
window.alert("viewfields.length=" + viewfields.length); //prints len=1 as expected
// line below get Caught exception: Unable to get value of the
// property 'document': object is null or undefined
var innerDoc = viewfields[0].contentDocument || viewfields[0].contentWindow.document;
if(innerDoc) {
window.alert("Wohoo we have an innerDoc");
}
} else
window.alert("no view fields found");
Ich teste dies mit IE9.
Kann ich eine Instanz der inneren Webseite mit diesem HTML bekommen? Wenn das so ist, wie?
EDIT
Wenn es hilft, hier ist die eigentliche, ungeschnittene html für die div in Frage.
<div id="WIN_0_536870915" arid=536870915 artype="View" ardbn="vfCubaChildren" class="arfid536870915 ardbnvfCubaChildren" STYLE="top:49; left:75; width:1038; height:322;z-index:1001;background-color:transparent;" arvfframe="<iframe style="top:0&#59; left:0&#59; width:1038&#59; height:322&#59;background-color: transparent&#59;" name="VF536870915" frameborder=1 scrolling="auto" allowtransparency="true" title="View Field" src="javascript:&quot;&lt;HTML&gt;&lt;/HTML&gt; ;&quot;" onload="DVFol&#40;&#41;">
</iframe>">
</div>
Das div hält die untergeordnete Form. Das untergeordnete Formular ist wie eine andere HTML-Webseite. Es hat Standard-HTML-Eingabefelder und Textareas. Ich muss Text in die Textarea im Kind (vom Elternteil) posten. Aber das Problem ist, dass ich noch nicht auf das Child-HTML-Objekt vom Eltern zugreifen kann.
ich wahrscheinlich nicht erkennen, was Sie arbeiten mit , aber was sind die Attribute "arid", "artype", "ardbn" und "arvfframe"? – Jesse
Ich dachte, du sagtest Viewfields war ein 'div' in einem' iframe', aber du behandelst es wie ein Array? Außerdem sollte sich dies nicht auf Ihren Code auswirken, Ihnen fehlen jedoch Anführungszeichen für einige Attribute. –
@Jesse arid usw. sind benutzerdefinierte Attribute, die von der Webanwendung verwendet werden. Web-App ist BMC Abhilfe, wenn das hilft. –