![]() |
Embedded WB Wordpress sticky Checken
Hey :)
ich versuche auf einem Wordpress Blog ![]() Per Browser das Sticky zu Checken. Meine übliche Methode ein Feld zu finden, fruchtet nicht!
Delphi-Quellcode:
Wer weiß Rat?
if embdwb1.go(Url,10000)then
begin try for I := 0 to 10 do begin embdwb1.OleObject.document.forms.item(I).elements.item('sticky').Checked:= True; ShowMessage(IntToStr(I)); end; except end; end; Gruß SM :) |
AW: Embedded WB Wordpress sticky Checken
Keiner eine Idee für mich?
|
AW: Embedded WB Wordpress sticky Checken
Hallo,
habe keine Ahnung, ob Dir dieses "Fundstück" von meiner Festplatte da unter Umständen, eventuell, vielleicht helfen könnte ;-)
Delphi-Quellcode:
So als Ansatz zum Weiterforschen?
// This will do a click on the first element of the first <FORM>, where an
// element is either <INPUT>, <SELECT> or <TEXTAREA>. // If there is more than one button, you can do something like: function WBClickButton(wb : TWebBrowser; sTagName : String; sValue : String; sType : String = 'SUBMIT') : Boolean; var ovElements : OleVariant; i : Integer; k : integer; begin Result := False; for k := 0 to wb.OleObject.Document.forms.Length - 1 do begin ovElements := wb.OleObject.Document.forms.item(k).elements; for i := 0 to (ovElements.Length - 1) do begin if (AnsiUpperCase(ovElements.item(i).tagName) = sTagName) and (AnsiUpperCase(ovElements.item(i).type) = sType) and (ovElements.item(i).Value = sValue) then begin ovElements.item(i).Click; Result := True; break; end; end; if not Result then begin for i := 0 to (ovElements.Length - 1) do begin if (AnsiUpperCase(ovElements.item(i).type) = AnsiUpperCase(sType)) and (ovElements.item(i).Value = sValue) then begin ovElements.item(i).Click; Result := True; break; end; end; end; end; end; |
AW: Embedded WB Wordpress sticky Checken
Das von IE/EmbeddedWB bereitgestellt DOM hat so seine Probleme wenn dieser dynamisch per JS zusammengebaut wird.
Vor allem wenn du hier nicht auf ein OnDocumentLoaded/Completet etc. wartest bekommst du u.U. noch den (nur halb) zusammengebauten DOM geliefert. |
AW: Embedded WB Wordpress sticky Checken
Den Ansatz mit dem Fundstück hatte ich schon probiert. Es funktioniert leider nicht.
Auch der Ansatz mit Dom/Zeit. Ich habe es auf einen Separaten Button gelegt. Aber selbst nach nem Kaffe kein Erfolg. Mal den Quelltext falls es wem hilft
Code:
</div><!-- .misc-pub-section -->
<div class="misc-pub-section misc-pub-visibility" id="visibility"> Sichtbarkeit: <span id="post-visibility-display">Öffentlich</span> <a href="#visibility" class="edit-visibility hide-if-no-js"><span aria-hidden="true">Bearbeiten</span> <span class="screen-reader-text">Sichtbarkeit ändern</span></a> <div id="post-visibility-select" class="hide-if-js"> <input type="hidden" name="hidden_post_password" id="hidden-post-password" value="" /> <input type="checkbox" style="display:none" name="hidden_post_sticky" id="hidden-post-sticky" value="sticky" /> <input type="hidden" name="hidden_post_visibility" id="hidden-post-visibility" value="public" /> <input type="radio" name="visibility" id="visibility-radio-public" value="public" checked='checked' /> <label for="visibility-radio-public" class="selectit">Öffentlich</label><br /> <span id="sticky-span"><input id="sticky" name="sticky" type="checkbox" value="sticky" /> <label for="sticky" class="selectit">Beitrag auf der Startseite halten</label><br /></span> <input type="radio" name="visibility" id="visibility-radio-password" value="password" /> <label for="visibility-radio-password" class="selectit">Passwortgeschützt</label><br /> <span id="password-span"><label for="post_password">Passwort:</label> <input type="text" name="post_password" id="post_password" value="" maxlength="20" /><br /></span> <input type="radio" name="visibility" id="visibility-radio-private" value="private" /> <label for="visibility-radio-private" class="selectit">Privat</label><br /> <p> <a href="#visibility" class="save-post-visibility hide-if-no-js button">OK</a> <a href="#visibility" class="cancel-post-visibility hide-if-no-js button-cancel">Abbrechen</a> </p> </div> </div><!-- .misc-pub-section --> |
AW: Embedded WB Wordpress sticky Checken
Hallo,
weitere Fundstücke, mit denen es mit 'nem TWebBrowser geklappt hat:
Delphi-Quellcode:
function WbSetCheckBoxField(WebBrowser: TWebBrowser; FieldName: string; Checked: boolean): Boolean;
var Field: TPoint; begin // Position des Felds holen if not WbFindField(WebBrowser, FieldName, Field) then begin Result := false; // Feld existiert nicht exit; // Ende end; try // CheckBox setzen WebBrowser.OleObject.Document.forms.Item(Field.x).Item(Field.y).Checked := Checked; Result := True; except Result := false; Exit; end; end;
Delphi-Quellcode:
function WbFindField(WebBrowser: TWebBrowser; FieldName: string; var Field: TPoint): boolean;
var i, j: Integer; FormItem: Variant; begin Result := False; //Hat das Dokument Forms? (Frames) if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then begin Exit; end; //Bearbeite alle Frames for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); // Bearbeite alle Felder eines Frames for j := 0 to FormItem.Length - 1 do begin try // Feldname wurde gefunden // gebe ihn zurück und ende if FormItem.Item(j).Name = FieldName then begin Field.x := i; // Position speichern Field.Y := j; Result := True; exit; end; except Exit; end; end; end; end;
Delphi-Quellcode:
if WbSetCheckBoxField(WebBrowser1, 'sticky', true) then begin
stb.SimpleText := Format('gechecked: %s',['sticky']); end else begin stb.SimpleText := Format('geht nicht :-(: %s',['sticky']); end; |
AW: Embedded WB Wordpress sticky Checken
Nur mal eine Frage, wenn WordPress eine API zur Steuerung anbietet, warum nimmt man nicht diese?
|
AW: Embedded WB Wordpress sticky Checken
Nachdem ich die diversen Varianten erfolglos Probierte,
PS: Danke für die Anregungen. Sie haben mir troz allem geholfen Die Lösung war eigentilch simpel, aber ich sah wohl den Wald vor lauter Bäumen nicht.
Delphi-Quellcode:
embdwb1.OleObject.Document.getElementById('sticky').checked:= True;
Über die WP API kann man Beiträge erstellen? Ohne das vorher Coden zu müssen mit den diversen Plugins? Ich wüsste nicht wie das geht?!? Da ich schlicht den Browser unsichtbar lasse, ist das schlicht und für mich die einfachste Lösung. Falls es mit Api noch einfacher geht, hab ich gern ein offenes Ohr!!! Gruß SM |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz